迭代c中的cJSON嵌套对象

sel*_*vam 0 c cjson

如何迭代嵌套的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"
                    }
           }
    };
Run Code Online (Sandbox Code Playgroud)

如何在C中打印deviceData的键(例如device0 device1设备2等)。预先感谢。

Ily*_*lya 6

假设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;
   }
}
Run Code Online (Sandbox Code Playgroud)