首页 > 解决方案 > 如果键包含点(例如 IP 地址),如何访问 SuperObject 对象?

问题描述

如果键包含点,则代码无法访问 JSON 对象。

JSON:

"TableTraps": {    
  "1.3.6.1.4.1.100.108.0.3": {
    "Vars": [ 
      "alarmDescription", 
      "alarmPositionUnit", 
      "alarmChannel"
    ]
  },
  "1.3.6.1.4.1.100.108.0.4": {
    "Vars": [ 
      "alarmDescription", 
      "alarmPositionUnit", 
      "alarmChannel"
    ]
  },
}

帕斯卡超对象代码:

TableTraps := LoadFromFile();
TrapOID := '1.3.6.1.4.1.100.108.0.3';
trapInfo := TableTraps.O[TrapOID];

结果,trapInfo == nil但我期望 SuperObject 实例。我试图包装 json 密钥:

TrapOID := '"' + '1.3.6.1.4.1.100.108.0.3' + '"';

或者

TrapOID := '''' + '1.3.6.1.4.1.100.108.0.3' + '''';

它没有帮助。

如果 json 键包含点,我应该如何调用 SuperObject 来访问对象实例?

相关问题如何使用 SuperObject 序列化包含点的 JSON 密钥(例如 IP 地址)?

标签: jsonserializationpascalsuperobject

解决方案


相关问题帮助我找到了解决方案。suprobject.O直接在解析对象上调用将点解析为 JSONPath 。因此,与其访问"1.3.6.1.4.1.100.108.0.3: {}"它,不如尝试访问此 JSON:

"1": { "3": { "6": { "1": { "4": { "1": { "100": { "0": { "3": value

这里的解决方法:

TableTraps := LoadFromFile();
TrapOID := '1.3.6.1.4.1.100.108.0.3';
trapInfo := TableTraps.AsObject.O[TrapOID]; // NOTE: AsObject is required!

推荐阅读