如果密钥包含点(例如IP地址),如何访问SuperObject对象?

时间:2018-09-06 11:38:16

标签: json serialization pascal 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"
    ]
  },
}

Pascal SuperObject代码:

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来访问对象实例?

相关问题How to serialize JSON key containing dots (like e.g. IP address) with SuperObject?

1 个答案:

答案 0 :(得分:1)

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

"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!