在C語言中,解析JSON數(shù)據(jù)是一項很常見的任務(wù)。為了簡化這個過程,我們可以使用現(xiàn)成的JSON解析類庫。下面我們介紹一種常用的、開源的C語言解析JSON的類庫——cJSON。
#include "cJSON.h" #include <stdio.h> int main() { // 定義一個JSON字符串 char *json_str = "{\"name\":\"Jack\",\"age\":30,\"hobby\":[\"swimming\",\"reading\"]}"; // 解析JSON字符串 cJSON *json = cJSON_Parse(json_str); // 讀取JSON對象中的成員 cJSON *name = cJSON_GetObjectItem(json, "name"); cJSON *age = cJSON_GetObjectItem(json, "age"); cJSON *hobbies = cJSON_GetObjectItem(json, "hobby"); // 打印讀取結(jié)果 printf("Name: %s\n", name->valuestring); printf("Age: %d\n", age->valueint); printf("Hobbies:\n"); cJSON *hobby; cJSON_ArrayForEach(hobby, hobbies) { printf("- %s\n", hobby->valuestring); } // 釋放JSON對象內(nèi)存 cJSON_Delete(json); return 0; }
在上面的示例代碼中,我們使用cJSON類庫解析了一段JSON字符串,并讀取了其中的成員。在使用cJSON解析JSON字符串時,我們首先需要定義一個指針類型的JSON對象,并通過調(diào)用cJSON_Parse函數(shù)將JSON字符串解析到該對象中。
讀取JSON對象中的成員時,我們可以使用cJSON_GetObjectItem函數(shù)根據(jù)成員名稱獲取成員對象。然后通過成員對象的valuestring或valueint成員變量獲取字符串或整型值。
在本例中,我們還使用了cJSON_ArrayForEach宏來循環(huán)遍歷JSON數(shù)組對象中的元素。
最后,我們還需要注意在程序結(jié)束時,調(diào)用cJSON_Delete函數(shù)釋放JSON對象的內(nèi)存。