CJSON是一個解析JSON的C語言庫。它能夠?qū)SON文本轉(zhuǎn)換成C程序中的數(shù)據(jù)類型。對于JSON數(shù)組,CJSON 支持多層嵌套,可以很方便地對它們進行解析和處理。
在CJSON中,數(shù)組被解析成一個類型為 cJSON_Array 的結構體。cJSON_Array中有一個指向 cJSON 類型結構體的指針,它可以指向任何類型的JSON對象。
/* 解析JSON數(shù)組示例 */ #include "cJSON.h" char *json_str = "{ \"array\":[[\"value11\",\"value12\"],[\"value21\",\"value22\"]] }"; int main() { cJSON *root = cJSON_Parse(json_str); if (root != NULL) { cJSON *array = cJSON_GetObjectItem(root, "array"); if (array != NULL) { int i = 0, j = 0; for (i = 0; i< cJSON_GetArraySize(array); i++) { cJSON *sub_array = cJSON_GetArrayItem(array, i); if (sub_array != NULL) { for (j = 0; j< cJSON_GetArraySize(sub_array); j++) { cJSON *value = cJSON_GetArrayItem(sub_array, j); if (value != NULL) { printf("%s ", value->valuestring); } } printf("\n"); } } } cJSON_Delete(root); } return 0; }
在上述代碼中,我們首先調(diào)用cJSON_Parse方法解析JSON字符串,返回一個指向 cJSON 類型結構體的指針root。隨后,我們調(diào)用cJSON_GetObjectItem方法獲取鍵名為"array"的JSON數(shù)組;如果成功獲取到,則我們依次獲取其子數(shù)組以及子數(shù)組中的值,使用cJSON_GetArraySize和cJSON_GetArrayItem方法進行獲取。
對于任意一個 cJSON 數(shù)據(jù)結構,都可以通過其相關字段或方法獲取到該數(shù)據(jù)結構的類型、鍵名、鍵值等信息,這些都為我們處理JSON數(shù)據(jù)提供了方便。
總之,CJSON是一個輕量、高效、易用的JSON解析庫,支持多層嵌套的JSON數(shù)組數(shù)據(jù)類型。我們可以通過使用指針遍歷JSON數(shù)組的層次結構,實現(xiàn)針對JSON數(shù)組的解析和處理。