如何迭代嵌套的cJSON对象?我想从C中的deviceData父对象获取(打印)所有键和值。它是一个cJson对象。
obj = { "command": "REPLACE_ROWS",
"table": "Device.XXX",
"deviceData": {
"device0": {
"DeviceName": "Filtered Device",
"MACAddress": "112233445599"
},
"device1": {
"DeviceName": "Filtered Device",
"MACAddress": "112233445599"
},
"device2": {
"DeviceName": "Filtered Device",
"MACAddress": "112233445599"
}
}
};
如何在C中打印deviceData的密钥(ex device0 device1 device 2等)。提前感谢。
答案 0 :(得分:5)
假设obj
是包含您的对象的字符串,您解析它然后使用next
进行迭代:
cJSON * root = cJSON_Parse(obj);
cJSON * deviceData = cJSON_GetObjectItem(root,"deviceData");
if( deviceData ) {
cJSON *device = deviceData->child;
while( device ) {
// get and print key
device = device->next;
}
}
答案 1 :(得分:0)
cJSON文档中有关于迭代对象的注释:
要遍历对象,可以使用与数组相同的方式使用cJSON_ArrayForEach宏。
请参阅:https://github.com/DaveGamble/cJSON#objects
cJSON_ArrayForEach
宏与ilya的提案基本相同,但它避免依赖于cJSON实现细节。