在C語言中讀取JSON文件可以使用很多第三方庫,比如cJSON、Jansson等等。這篇文章我們將使用cJSON開源庫讀取JSON文件。
// 引入頭文件 #include#include #include "cJSON.h" // 讀取JSON文件 int main() { // 打開JSON文件 FILE *fp = fopen("example.json", "rb"); if (!fp) { // 如果文件打開失敗,則退出程序 printf("Failed to open file: example.json"); exit(EXIT_FAILURE); } // 獲取文件長度并分配內(nèi)存 fseek(fp, 0, SEEK_END); long length = ftell(fp); fseek(fp, 0, SEEK_SET); char *buffer = (char*)malloc(length + 1); if (!buffer) { fclose(fp); printf("Memory allocation error!"); exit(EXIT_FAILURE); } // 讀取文件內(nèi)容到緩存中 fread(buffer, 1, length, fp); fclose(fp); buffer[length] = '\0'; // 解析JSON文件 cJSON *json = cJSON_Parse(buffer); if (!json) { printf("JSON parse error!"); exit(EXIT_FAILURE); } // 獲取JSON對象中的值 char *name = cJSON_GetObjectItem(json, "name")->valuestring; int age = cJSON_GetObjectItem(json, "age")->valueint; char *company = cJSON_GetObjectItem(cJSON_GetObjectItem(json, "work"), "company")->valuestring; // 打印獲取的值 printf("name: %s, age: %d, company: %s", name, age, company); // 釋放內(nèi)存 cJSON_Delete(json); free(buffer); return 0; }
以上代碼中我們首先打開JSON文件并讀取其內(nèi)容到內(nèi)存中,然后再使用cJSON_Parse()函數(shù)將JSON文本轉(zhuǎn)換成cJSON對象,接著我們就可以使用cJSON_GetObjectItem()函數(shù)獲取JSON對象中的值了。