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

c 解析一個(gè)json數(shù)組對(duì)象數(shù)組

在C語(yǔ)言中,解析JSON數(shù)組對(duì)象數(shù)組是非常常見(jiàn)的操作。通常情況下,我們使用第三方庫(kù)來(lái)處理這個(gè)任務(wù),比如cJSON這個(gè)輕量級(jí)的JSON解析庫(kù)。

首先,我們需要準(zhǔn)備一個(gè)JSON文本字符串,它包含一個(gè)數(shù)組對(duì)象數(shù)組,例如:

[
{
"name": "apple",
"color": "red"
},
{
"name": "banana",
"color": "yellow"
}
]

接下來(lái),我們需要使用cJSON庫(kù)來(lái)解析這個(gè)JSON文本字符串。首先,我們需要將文本字符串解析成一個(gè)cJSON對(duì)象,然后通過(guò)遍歷這個(gè)對(duì)象來(lái)獲取JSON數(shù)組對(duì)象數(shù)組中的每一個(gè)對(duì)象。

#include <stdio.h>
#include <cjson/cJSON.h>
int main() {
const char *json_string = "[{\"name\":\"apple\",\"color\":\"red\"},{\"name\":\"banana\",\"color\":\"yellow\"}]";
cJSON *root = cJSON_Parse(json_string);
if (root == NULL) {
printf("parse error\n");
return 1;
}
int array_size = cJSON_GetArraySize(root);
for (int i = 0; i < array_size; i++) {
cJSON *array_item = cJSON_GetArrayItem(root, i);
cJSON *name = cJSON_GetObjectItem(array_item, "name");
cJSON *color = cJSON_GetObjectItem(array_item, "color");
printf("%s is %s\n", name->valuestring, color->valuestring);
}
cJSON_Delete(root);
return 0;
}

首先,我們將JSON文本字符串賦值給一個(gè)指針變量json_string。然后,使用cJSON_Parse函數(shù)將json_string解析成一個(gè)cJSON對(duì)象root。如果解析失敗,則返回NULL。

使用cJSON_GetArraySize函數(shù)獲取JSON數(shù)組對(duì)象數(shù)組的長(zhǎng)度,然后通過(guò)循環(huán)遍歷每一個(gè)對(duì)象。使用cJSON_GetArrayItem函數(shù)獲取當(dāng)前對(duì)象,并使用cJSON_GetObjectItem函數(shù)獲取對(duì)象中的"name"和"color"成員,分別保存到name和color指針變量中。最后,輸出name和color的值,并在每個(gè)對(duì)象之間輸出一個(gè)換行符。

最后,我們?cè)诔绦蚪Y(jié)束前使用cJSON_Delete函數(shù)釋放root對(duì)象的內(nèi)存空間,防止內(nèi)存泄漏。