在 C 語言中,想要打開和讀取 JSON 文件,需要使用一些庫函數(shù)來實(shí)現(xiàn)。其中,cJSON 庫是一個(gè)常用的 JSON 解析庫,可以方便地對(duì) JSON 文件進(jìn)行操作。
#include "cJSON.h" #includeint main() { char* filename = "example.json"; FILE* file = fopen(filename, "r"); if (file == NULL) { printf("Failed to open file: %s\n", filename); return 1; } fseek(file, 0, SEEK_END); long length = ftell(file); fseek(file, 0, SEEK_SET); char* buffer = (char*)malloc(length + 1); if (buffer == NULL) { printf("Failed to allocate memory\n"); fclose(file); return 1; } fread(buffer, 1, length, file); fclose(file); buffer[length] = '\0'; cJSON* root = cJSON_Parse(buffer); if (root == NULL) { const char* error_ptr = cJSON_GetErrorPtr(); if (error_ptr != NULL) { printf("Error before: %s\n", error_ptr); } cJSON_Delete(root); return 1; } cJSON_Delete(root); free(buffer); return 0; }
上述代碼首先通過 fopen 函數(shù)打開 JSON 文件,并檢查是否打開成功。然后使用 fseek 和 ftell 函數(shù)獲取文件的長(zhǎng)度,并使用 malloc 函數(shù)動(dòng)態(tài)分配內(nèi)存。接下來使用 fread 函數(shù)讀取文件中的內(nèi)容,并使用 cJSON_Parse 函數(shù)將其轉(zhuǎn)化為 cJSON 結(jié)構(gòu)體,如果轉(zhuǎn)化失敗,則使用 cJSON_GetErrorPtr 函數(shù)打印錯(cuò)誤信息。
最后,在使用 cJSON 結(jié)構(gòu)體完成操作后,通過 cJSON_Delete 函數(shù)釋放內(nèi)存。