3

如何迭代嵌套的 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 的密钥(例如 device0 device1 device 2 等)。提前致谢。

4

2 回答 2

11

假设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;
   }
}
于 2016-01-19T12:32:10.617 回答
0

cJSON 文档中有一条关于迭代对象的评论:

要迭代对象,您可以使用 cJSON_ArrayForEach 宏,方法与数组相同。

见:https ://github.com/DaveGamble/cJSON#objects

cJSON_ArrayForEach宏与 ilya 的提议基本相同,但它避免依赖 cJSON 实现细节。

于 2018-02-02T12:53:28.713 回答