欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

c 嵌套多重json數(shù)組

林雅南2年前10瀏覽0評論

在C語言中,處理JSON數(shù)據(jù)結(jié)構(gòu)通常需要用到第三方庫。常見的JSON解析庫有cJSON、jansson等。其中,cJSON是比較輕量級的一種庫,可以方便地解析JSON數(shù)據(jù)。

對于簡單的JSON數(shù)據(jù),使用cJSON庫很容易處理。但是,當(dāng)JSON數(shù)據(jù)包含多重嵌套的數(shù)組時(shí),則需要使用多個(gè)循環(huán)來對其進(jìn)行處理。下面是一個(gè)使用cJSON庫處理多重嵌套JSON數(shù)組的例子:

#include <stdio.h>
#include <cJSON.h>
int main()
{
char* json_str = "{
\"name\": \"Tom\",
\"scores\": [
{
\"subject\": \"Math\",
\"score\": 90
},
{
\"subject\": \"English\",
\"score\": 85
},
{
\"subject\": \"Chinese\",
\"score\": 95
}
]
}";
cJSON* root = cJSON_Parse(json_str);
cJSON* scores = cJSON_GetObjectItem(root, "scores");
int scores_size = cJSON_GetArraySize(scores);
for (int i = 0; i < scores_size; i++) {
cJSON* score = cJSON_GetArrayItem(scores, i);
cJSON* subject = cJSON_GetObjectItem(score, "subject");
cJSON* s_score = cJSON_GetObjectItem(score, "score");
printf("%s: %d\n", subject->valuestring, s_score->valueint);
}
cJSON_Delete(root);
return 0;
}

上述代碼中,我們首先定義了一個(gè)JSON字符串,包含一個(gè)name字段和一個(gè)嵌套的scores數(shù)組。我們使用cJSON庫的cJSON_Parse函數(shù)將其解析為一個(gè)cJSON對象。接著,我們使用cJSON_GetObjectItem函數(shù)獲取scores數(shù)組,并使用cJSON_GetArraySize獲取scores數(shù)組的大小。

接下來,我們使用for循環(huán)遍歷scores數(shù)組,并使用cJSON_GetArrayItem函數(shù)獲取數(shù)組中的每個(gè)元素。然后,我們再使用cJSON_GetObjectItem函數(shù)獲取每個(gè)元素中的subject和score字段,并輸出它們的值。

最后,我們使用cJSON_Delete函數(shù)來釋放cJSON對象占用的內(nèi)存。