色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c 解析復雜json解析

錢淋西1年前8瀏覽0評論

在實際開發中,我們經常需要解析復雜的 JSON 數據。C 語言本身不支持 JSON 數據的解析,但可以使用第三方庫進行解析,常用的有 cJSON、Jansson 等。

下面以 cJSON 為例,介紹如何解析一個嵌套的 JSON 數據。

#include <stdio.h>
#include <cJSON.h>
int main() {
char* json_str = "{\"name\":\"Tom\",\"age\":18,\"hobbies\":[\"reading\",\"swimming\"]}";
cJSON* json = cJSON_Parse(json_str);
cJSON* name_json = cJSON_GetObjectItem(json, "name");
const char* name = cJSON_GetStringValue(name_json);
printf("Name: %s\n", name);
cJSON* age_json = cJSON_GetObjectItem(json, "age");
int age = cJSON_GetNumberValue(age_json);
printf("Age: %d\n", age);
cJSON* hobbies_json = cJSON_GetObjectItem(json, "hobbies");
cJSON* hobby_json = cJSON_GetArrayItem(hobbies_json, 0);
const char* hobby = cJSON_GetStringValue(hobby_json);
printf("Hobby: %s\n", hobby);
cJSON_Delete(json);
return 0;
}

以上代碼解析的 JSON 數據如下:

{
"name": "Tom",
"age": 18,
"hobbies": [
"reading",
"swimming"
]
}

代碼中使用 cJSON_Parse 函數將 JSON 字符串解析為 cJSON 對象,然后使用 cJSON_GetObjectItem 函數根據鍵名獲取對應的值。

需要注意的是,如果獲取的值是字符串型,需要使用 cJSON_GetStringValue 函數獲取值,如果獲取的值是數值型,需要使用 cJSON_GetNumberValue 函數獲取值。

如果獲取的值是數組型,則需要使用 cJSON_GetArrayItem 函數獲取數組中的對應元素。

最后,使用 cJSON_Delete 函數釋放 cJSON 對象。