Итерация вложенного объекта cJSON в c
Как перебрать вложенный объект cJSON? я хочу получить (напечатать) все ключи и значения из родительского объекта deviceData в C. Это объект 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"
}
}
};
как распечатать ключи deviceData (ex device0 device1 device 2 и т. д.) в C. Заранее спасибо.
2 ответа
Решение
Если бы 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;
}
}
В документации cJSON есть комментарий об итерации по объекту:
Чтобы перебрать объект, вы можете использовать макрос cJSON_ArrayForEach так же, как и для массивов.
Смотрите: https://github.com/DaveGamble/cJSON
cJSON_ArrayForEach
macro в основном делает то же самое, что и предложение ilya, но избегает использования деталей реализации cJSON.