如果密钥包含点,则代码无法访问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?
答案 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!