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

cjson解析json數組中數組

傅智翔1年前8瀏覽0評論

cjson是一個基于C語言實現的json解析庫,可以方便地解析json格式的數據。

當在json數組中包含另一個數組時,cjson提供了一種解析方式。假設有如下json數據:

{
"name": "Jack",
"age": 25,
"languages": [
"Chinese",
"English",
[
"French",
"German",
"Japanese"
]
]
}

其中,languages字段是一個包含三個元素的數組。第一個和第二個元素是簡單的字符串,而第三個元素是一個包含三個元素的字符串數組。

通過cjson解析這個json數組的代碼如下:

#include <stdio.h>
#include <cjson/cJSON.h>
int main()
{
char *json_data = "{\"name\":\"Jack\",\"age\":25,\"languages\":[\"Chinese\",\"English\",[\"French\",\"German\",\"Japanese\"]]}";
cJSON *root = cJSON_Parse(json_data);
cJSON *languages = cJSON_GetObjectItem(root, "languages");
int languages_size = cJSON_GetArraySize(languages);
for (int i = 0; i < languages_size; i++)
{
cJSON *item = cJSON_GetArrayItem(languages, i);
if (cJSON_IsString(item))
{
printf("%s\n", item->valuestring);
}
else if (cJSON_IsArray(item))
{
int item_size = cJSON_GetArraySize(item);
for (int j = 0; j < item_size; j++)
{
cJSON *sub_item = cJSON_GetArrayItem(item, j);
printf("%s\n", sub_item->valuestring);
}
}
}
cJSON_Delete(root);
return 0;
}

該代碼首先解析json數據,然后獲取languages字段對應的cJSON對象。通過cJSON_GetArraySize函數獲取languages數組的大小。遍歷數組中的每一個元素,如果是字符串,則直接輸出字符串;如果是數組,則再次遍歷其中的元素,輸出子元素的字符串。

上述代碼的輸出結果如下:

Chinese
English
French
German
Japanese

可以看到,該代碼成功地輸出了包含子數組的json數組的所有元素。