在C語言中,讀取JSON文件可以使用第三方庫,比如CJSON庫。
首先要在代碼中引入CJSON庫的頭文件:
#include "cJSON.h"
接著需要定義一個指向JSON對象的指針:
cJSON *json;
然后讀取JSON文件的內容:
char *buffer = NULL; //用于保存文件內容的緩沖區 long length; FILE *file = fopen("example.json", "r"); if (file) { fseek(file, 0, SEEK_END); length = ftell(file); fseek(file, 0, SEEK_SET); buffer = (char*)malloc(length); if (buffer) { fread(buffer, 1, length, file); } fclose(file); }
這段代碼將JSON文件的內容讀取到了緩沖區中。
接下來,使用CJSON庫解析緩沖區的內容:
json = cJSON_Parse(buffer);
如果解析成功,json指向的就是該JSON文件的根對象,可以通過它來訪問文件中的數據。
最后,要釋放buffer占用的內存:
if (buffer) free(buffer);
完整的代碼示例:
#include "cJSON.h" int main() { cJSON *json; char *buffer = NULL; long length; FILE *file = fopen("example.json", "r"); if (file) { fseek(file, 0, SEEK_END); length = ftell(file); fseek(file, 0, SEEK_SET); buffer = (char*)malloc(length); if (buffer) { fread(buffer, 1, length, file); } fclose(file); } json = cJSON_Parse(buffer); if (buffer) free(buffer); //訪問文件中的數據 cJSON *name = cJSON_GetObjectItem(json, "name"); printf("name = %s\n", name->valuestring); cJSON *age = cJSON_GetObjectItem(json, "age"); printf("age = %d\n", age->valueint); cJSON_Delete(json); //釋放JSON對象 return 0; }