cJSON 解析JSON實例

cJSON 解析的數據

The result of GET http://127.0.0.1:9871/iPhone_settings/mobile_devices/paired_devices

{
    "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;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章