JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,常用于互聯網數據交互。在C語言中,使用第三方庫cJSON可以讀取并處理JSON格式的數據。
首先,需要下載cJSON庫,并將cJSON.h、cJSON.c兩個文件放在代碼目錄下。然后在需要使用JSON的代碼文件中引入頭文件。
#include "cJSON.h"
接下來,可以使用cJSON_Parse函數將JSON文件內容讀取到一個cJSON結構體中。
cJSON *json; char *json_content = ""; // 讀取JSON文件內容到json_content中 json = cJSON_Parse(json_content);
得到cJSON結構體之后,就可以根據需要讀取JSON中的數據了。常用的讀取函數包括cJSON_GetObjectItem、cJSON_GetArrayItem和cJSON_GetObjectItemCaseSensitive等。
例如,下面的代碼讀取JSON中的一個字符串字段:
cJSON *name = cJSON_GetObjectItemCaseSensitive(json, "name"); if (cJSON_IsString(name) && name->valuestring != NULL) { printf("name: %s\n", name->valuestring); }
其中,cJSON_IsString用于判斷JSON字段的類型是否為字符串,name->valuestring則是實際的字符串值。
讀取JSON中的數組或對象字段也類似,只需要使用不同的讀取函數即可。如下面的代碼讀取了一個JSON數組字段并遍歷其中所有的字符串值:
cJSON *fruits = cJSON_GetObjectItemCaseSensitive(json, "fruits"); if (cJSON_IsArray(fruits)) { cJSON *fruit; cJSON_ArrayForEach(fruit, fruits) { if (cJSON_IsString(fruit) && fruit->valuestring != NULL) { printf("fruit: %s\n", fruit->valuestring); } } }
最后,需要在程序結束時釋放掉cJSON結構體的內存,使用cJSON_Delete函數即可。
cJSON_Delete(json);
這里介紹了cJSON庫讀取JSON文件內容的基本使用方法,讀者可以根據實際情況進一步擴展和優化。