在C語言中,如果我們要解析JSON數據為數組對象,就需要借助第三方庫來處理。近年來,最流行的JSON解析庫就是cJSON了。cJSON是一個輕量級的C語言JSON解析器,它可以將JSON數據解析為C語言中的對象,支持讀和寫JSON數據,使用簡單方便。
在解析JSON數據為數組對象時,我們需要定義一個cJSON類型的指針,并調用cJSON_Parse函數來解析JSON字符串。下面是一個完整的例子:
#include <stdio.h> #include <cjson/cJSON.h> int main() { char *json_str = "[{ \"name\":\"Alice\", \"age\":20 }, { \"name\":\"Bob\", \"age\":25 }]"; cJSON *root = cJSON_Parse(json_str); if (root == NULL) { printf("JSON解析失敗\n"); return -1; } int array_size = cJSON_GetArraySize(root); for (int i = 0; i < array_size; i++) { cJSON *obj = cJSON_GetArrayItem(root, i); char *name = cJSON_GetObjectItem(obj, "name")->valuestring; int age = cJSON_GetObjectItem(obj, "age")->valueint; printf("姓名:%s,年齡:%d\n", name, age); } cJSON_Delete(root); return 0; }
在上面的代碼中,我們首先定義了一個JSON字符串,它包含了兩個對象,每個對象有一個name和一個age屬性。然后我們調用cJSON_Parse函數來解析JSON數據,如果解析失敗則返回NULL。
接著,我們使用cJSON_GetArraySize函數來獲取數組的長度,然后使用循環來遍歷數組中的每一個元素。對于每個元素,我們可以使用cJSON_GetArrayItem函數來獲取它的指針,并使用cJSON_GetObjectItem函數來獲取它的屬性值。在本例中,我們分別獲取了name和age兩個屬性,并將它們轉換成C語言中的字符串和整數。
最后,我們釋放了cJSON對象的內存,并返回了0,表示程序正常執行完畢。