cJSON 解析JSON例項
阿新 • • 發佈:2019-01-27
cJSON 解析的資料
{
"STATUS": {"RESULT": "SUCCESS", "DETAIL": "Success"},
"ITEMS":
[
{
"HASHVAL": 769973531, "CNAME": "paired_devices", "TYPE": "T_LIST_PAIRED_DEVICES_V1", "NAME":
"VALUE": [
{"DEVICE ID": "d1b9b0aa63c80427", "DEVICE NAME": "VIZIO XR6P10" },
{"DEVICE ID": "12345", "DEVICE NAME": "JS_POSTMAN_1"},
{"DEVICE ID": "fff3149104611fff", "DEVICE NAME": "SIGMA_VIZIO_UI"}
]
}
],
"HASHLIST": [722496676, 606446411],
"URI": "/menu_native/dynamic/tv_settings/mobile_devices/paired_devices",
"PARAMETERS ": {"FLAT": "SYS_NOERROR", "HELPTEXT": "SYS_FAILED", "HASHONLY": "SYS_FAILED"}
}
code example
int i = 0;
cJSON* item_json = NULL;
cJSON* array_json = NULL;
cJSON* elem_json = NULL;
cJSON* signleArrElem_json = NULL;
item_json = cJSON_GetObjectItem(root_json, "ITEMS");
if (item_json == NULL) {
MICRO_ERROR("No ITEMS string found: %s\n" , cJSON_GetErrorPtr());
ret = BE_FAILED;
goto EXIT;
}
signleArrElem_json = cJSON_GetArrayItem(item_json, 0);
if (signleArrElem_json == NULL) {
MICRO_ERROR("cJSON_GetArrayItem() failed, : %s. \n", cJSON_GetErrorPtr());
ret = BE_FAILED;
goto EXIT;
}
array_json = cJSON_GetObjectItem(signleArrElem_json, "VALUE");
if (array_json == NULL) {
MICRO_ERROR("No VALUE string found: %s\n", cJSON_GetErrorPtr());
ret = BE_FAILED;
goto EXIT;
}
for (i = 0; i < cJSON_GetArraySize(array_json); ++i) {
item_json = cJSON_GetArrayItem(array_json, i);
if (array_json == NULL) continue;
elem_json = cJSON_GetObjectItem(item_json, "DEVICE NAME");
if (elem_json == NULL) {
MICRO_ERROR("cJSON_GetObjectItem() failed, : %s. \n", cJSON_GetErrorPtr());
ret = BE_FAILED;
goto EXIT;
}
memcpy(myDevicesList[i].deviceName, elem_json->valuestring, strlen(elem_json->valuestring));
MICRO_ERROR("myDevicesList[i].deviceName: %s\n", myDevicesList[i].deviceName);
elem_json = cJSON_GetObjectItem(item_json, "DEVICE ID");
if (elem_json == NULL) {
MICRO_ERROR("cJSON_GetObjectItem() failed, : %s. \n", cJSON_GetErrorPtr());
ret = BE_FAILED;
goto EXIT;
}
.......
MICRO_ERROR("myDevicesList[i].deviceId: %s\n", myDevicesList[i].deviceId);
}
.....
EXIT:
cJSON_Delete(root_json);
return ret;