C語言提供了很多對JSON進(jìn)行解析的庫,其中比較流行的是cJSON庫。本文將通過一個JSON數(shù)組解析的實例來介紹如何使用cJSON庫。
#include "cJSON.h" #include <stdio.h> int main(int argc, char *argv[]) { const char *json_str = "[{\"name\": \"Tom\", \"age\": 18},\ {\"name\": \"Lucy\", \"age\": 20}]"; cJSON *root = cJSON_Parse(json_str); if (!root) { printf("JSON parse error!\n"); return -1; } cJSON *person = NULL; cJSON_ArrayForEach(person, root) { cJSON *name = cJSON_GetObjectItem(person, "name"); cJSON *age = cJSON_GetObjectItem(person, "age"); printf("name:%s\n", cJSON_Print(name)); printf("age:%d\n", age->valueint); } cJSON_Delete(root); return 0; }
在代碼中,我們首先定義了一個JSON字符串。在實際開發(fā)中,我們可能需要從文件或者網(wǎng)絡(luò)中獲取JSON字符串,這里為了方便直接在代碼中定義了。
接著,我們使用cJSON_Parse函數(shù)將JSON字符串轉(zhuǎn)換為cJSON對象,如果轉(zhuǎn)換失敗則輸出錯誤信息并退出。
然后,我們通過cJSON_ArrayForEach宏遍歷JSON數(shù)組中的每一個元素,這個宏需要傳入兩個參數(shù),第一個是cJSON對象,第二個是cJSON數(shù)組對象。在每次遍歷中,我們使用cJSON_GetObjectItem函數(shù)獲取當(dāng)前元素中的"name"和"age"屬性,并輸出其值。
最后,我們使用cJSON_Delete釋放cJSON對象的內(nèi)存,避免內(nèi)存泄漏。
以上就是使用cJSON庫進(jìn)行JSON數(shù)組解析的一個簡單實例。希望本文能幫助大家更好地使用cJSON庫。