cJSON是一款輕量級的C語言JSON解析器,它提供了一套簡單的API來處理JSON數據。在處理JSON數組時,我們可以使用cJSON提供的遍歷函數來遍歷數組中的每個元素。
假設我們有一個JSON數組:
{ "people": [ { "name": "Tom", "age": 18 }, { "name": "Jerry", "age": 20 }, { "name": "Mickey", "age": 22 } ] }
我們可以通過如下代碼來遍歷數組:
cJSON *root = cJSON_Parse(json_string); cJSON *people_array = cJSON_GetObjectItem(root, "people"); if (people_array != NULL && cJSON_IsArray(people_array)) { cJSON *person = NULL; cJSON_ArrayForEach(person, people_array) { cJSON *name = cJSON_GetObjectItem(person, "name"); cJSON *age = cJSON_GetObjectItem(person, "age"); printf("Name: %s, Age: %d\n", name->valuestring, age->valueint); } }
首先,我們通過cJSON_Parse函數將JSON字符串解析成一個cJSON對象,然后使用cJSON_GetObjectItem函數獲取JSON數組對象。并使用cJSON_IsArray函數判斷獲取的對象是否為一個JSON數組對象。
如果獲取到的是一個JSON數組對象,我們就可以使用cJSON_ArrayForEach宏來遍歷數組。在每次循環中,我們獲取數組中的一個JSON對象(即數組中的一個元素),然后再使用cJSON_GetObjectItem函數獲取該對象中的name和age屬性,并輸出其值。
需要注意的是,當我們使用cJSON_Parse函數解析JSON字符串時,如果JSON字符串中的某個元素不存在,則相應的cJSON對象將返回NULL。因此,我們需要在遍歷數組時使用if語句來判斷獲取到的對象是否為NULL。