1. 程式人生 > >cJSON 解析JSON例項

cJSON 解析JSON例項

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;