JSON(JavaScript Object Notation)是一種輕量級的數據交換格式。C語言通過讀取JSON文件,可以實現對JSON數據的解析與處理。下面來了解一下如何在C語言中讀取JSON文件。
C語言提供了很多JSON解析庫,如cJSON,json-c等。這些庫的使用方法基本是一樣的,這里以cJSON為例,介紹一下如何在C語言中讀取JSON文件。
//引用cJSON解析庫頭文件 #include "cJSON.h" int main(void) { //打開JSON文件 FILE *fp = fopen("test.json", "r"); if (fp == NULL) { printf("open file error\n"); return 1; } //獲取JSON文件長度 fseek(fp, 0, SEEK_END); long file_size = ftell(fp); fseek(fp, 0, SEEK_SET); //讀取JSON文件內容 char *json_str = (char*)malloc(file_size + 1); fread(json_str, 1, file_size, fp); json_str[file_size] = '\0'; //關閉JSON文件 fclose(fp); //解析JSON數據 cJSON *json = cJSON_Parse(json_str); if (json == NULL) { printf("parse json error\n"); return 1; } //獲取JSON數據 cJSON *name = cJSON_GetObjectItem(json, "name"); if (name != NULL) { printf("name = %s\n", name->valuestring); } //釋放JSON數據內存 cJSON_Delete(json); return 0; }
上述代碼中,通過fopen函數打開JSON文件,并使用fseek函數獲取JSON文件長度。在讀取JSON文件內容時,使用malloc函數為json_str分配內存空間,讀取文件內容后在末尾加上'\0',表示字符串結束。解析JSON數據時,使用cJSON_Parse函數將json_str解析成cJSON對象。調用cJSON_GetObjectItem函數獲取JSON數據,并將獲取到的數據輸出。最后,使用cJSON_Delete函數釋放cJSON對象內存,釋放json_str內存。
總之,通過cJSON等JSON解析庫可以很方便地在C語言中讀取JSON文件數據。需要注意的是,JSON文件格式要符合標準格式,否則會解析失敗。