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

c如何遍歷json字符串?dāng)?shù)組

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

在C語言中,我們可以使用第三方庫如cJSON來輔助操作JSON字符串。

假設(shè)我們有一個JSON字符串?dāng)?shù)組如下:

{
"students": [
{
"name": "Tom",
"age": 20,
"score": [90, 85, 95]
},
{
"name": "Jack",
"age": 21,
"score": [85, 80, 90]
}
]
}

遍歷數(shù)組需要用到循環(huán)結(jié)構(gòu)。我們先將JSON字符串解析成cJSON對象:

cJSON* root = cJSON_Parse(json_str);
cJSON* students = cJSON_GetObjectItemCaseSensitive(root, "students");
for (int i = 0; i< cJSON_GetArraySize(students); i++)
{
cJSON* student = cJSON_GetArrayItem(students, i);
...
}

這里我們使用了cJSON庫中的函數(shù)cJSON_Parse將JSON字符串解析成cJSON對象。然后使用cJSON_GetObjectItemCaseSensitive函數(shù)獲取到數(shù)組對象students。 接著使用cJSON_GetArraySizecJSON_GetArrayItem函數(shù)分別獲取到數(shù)組大小和每個元素的對象。

接下來就可以在循環(huán)體中遍歷數(shù)組元素,我們可以使用cJSON_GetObjectItemCaseSensitive函數(shù)獲取元素的子對象,如下:

cJSON* name = cJSON_GetObjectItemCaseSensitive(student, "name");
cJSON* age = cJSON_GetObjectItemCaseSensitive(student, "age");
cJSON* score = cJSON_GetObjectItemCaseSensitive(student, "score");
for (int j = 0; j< cJSON_GetArraySize(score); j++)
{
cJSON* score_item = cJSON_GetArrayItem(score, j);
...
}

在遍歷數(shù)組元素中,我們同樣需要使用循環(huán)結(jié)構(gòu),通過函數(shù)cJSON_GetArrayItem依次獲取數(shù)組元素對象。 同時需要注意的是,如果數(shù)組中每個元素的結(jié)構(gòu)相同,可以將遍歷數(shù)組的循環(huán)體封裝成函數(shù)以便代碼復(fù)用。

最后別忘了在用完cJSON對象后釋放它們的內(nèi)存:

cJSON_Delete(root);

以上就是在C語言中遍歷JSON字符串?dāng)?shù)組的方法,使用第三方庫如cJSON可以簡單快速地實現(xiàn)。希望對您有所幫助。