在使用 c 語言讀取 json 文件時(shí),需要添加相應(yīng)的庫來提供解析 json 格式的功能。常用的庫包括JSON-C、Jansson等。
下面以 JSON-C 庫為例,介紹如何使用它來讀取 json 文件。
// 引用庫頭文件 #include <json-c/json.h>int main() { // 指定 json 文件路徑 const char* filename = "data.json"; // 打開 json 文件,獲取文件句柄 FILE* fp = fopen(filename, "r"); if (fp == NULL) { printf("Failed to open %s\n", filename); return -1; } // 讀取 json 文件內(nèi)容 char buffer[1024]; size_t len = fread(buffer, sizeof(char), sizeof(buffer), fp); fclose(fp); // 解析 json 字符串 json_object* jobj = json_tokener_parse(buffer); // 讀取 json 中的數(shù)據(jù) // 以下代碼僅為示例,實(shí)際操作可根據(jù) json 結(jié)構(gòu)自行編寫 json_object* name = json_object_object_get(jobj, "name"); printf("Name: %s\n", json_object_get_string(name)); json_object* age = json_object_object_get(jobj, "age"); printf("Age: %d\n", json_object_get_int(age)); // 釋放資源 json_object_put(jobj); return 0; }
在上述代碼中,我們先打開 json 文件,然后讀取文件內(nèi)容到 buffer 中。接著,利用 JSON-C 提供的函數(shù) json_tokener_parse() 將讀取到的 json 字符串解析成一個(gè) json_object 對象。
最后,我們可以通過 json_object_object_get() 函數(shù)來讀取 json 中的具體數(shù)據(jù),比如上述代碼中的姓名和年齡。需要注意的是,需要根據(jù) json 結(jié)構(gòu)對代碼進(jìn)行相應(yīng)的調(diào)整。
需要強(qiáng)調(diào)的是,JSON-C 庫內(nèi)部實(shí)現(xiàn)的數(shù)據(jù)結(jié)構(gòu)十分靈活,可以方便地對 json 對象進(jìn)行增刪改查等操作。