在使用C語言解析列表JSON數據時,我們通常需要使用第三方庫來幫助我們完成這一任務。下面將介紹一種使用 cJSON 庫解析 JSON 數據的例子。
#include <stdio.h>
#include <stdlib.h>
#include <cjson/cJSON.h>
int main() {
char *json_string = "{ \"fruit\": [\"apple\", \"banana\", \"pear\"] }";
cJSON *root = cJSON_Parse(json_string);
if (root == NULL) {
printf("Error before: [%s]\n", cJSON_GetErrorPtr());
} else {
cJSON *fruits = cJSON_GetObjectItemCaseSensitive(root, "fruit");
if (cJSON_IsArray(fruits)) {
printf("Fruits:\n");
cJSON *fruit_item = NULL;
cJSON_ArrayForEach(fruit_item, fruits) {
printf(" - %s\n", cJSON_GetStringValue(fruit_item));
}
}
cJSON_Delete(root);
}
return 0;
}
在本例中,我們定義了一個字符串類型的 JSON 數據。我們首先使用 cJSON_Parse 函數將其解析為一個 cJSON 對象,如果解析失敗,則會打印出錯誤信息。然后我們通過 cJSON_GetObjectItemCaseSensitive 函數獲得 JSON 對象中名為 "fruit" 的數組,我們在這里檢測它是否為數組并遍歷其所有元素,最后打印出所有水果名稱。
需要注意的是,使用 cJSON 庫時,要記得用 cJSON_Delete 函數釋放解析出來的 cJSON 對象,以避免內存泄漏等問題。