在現代軟件開發中,JSON(JavaScript Object Notation)已經成為了一種非常流行的數據格式。C語言是一種非常受歡迎的編程語言,具有高效、靈活等特點,因此如何在C語言中讀寫JSON文件成為了一個非常重要的問題。
通過C語言,可以使用JSON-C這樣的開源JSON解析庫來幫助我們讀寫JSON文件,下面是一個簡單的案例。
#include<stdio.h>
#include<stdlib.h>
#include<json-c/json.h>
int main() {
// 創建一個 JSON 對象
json_object* jobj = json_object_new_object();
// 向 JSON 對象中添加鍵值
json_object_object_add(jobj, "name", json_object_new_string("John"));
json_object_object_add(jobj, "age", json_object_new_int(25));
json_object_object_add(jobj, "married", json_object_new_boolean(0));
// 將 JSON 對象寫入文件
FILE* file = fopen("test.json", "w+");
fprintf(file, "%s\n", json_object_to_json_string(jobj));
fclose(file);
// 從文件中讀取 JSON 對象
file = fopen("test.json", "r");
char buffer[1024];
fgets(buffer, 1024, file);
fclose(file);
json_object* jobj_read = json_tokener_parse(buffer);
// 獲取 JSON 對象中的鍵值
bool married = json_object_get_boolean(json_object_object_get(jobj_read, "married"));
printf("married: %d\n", married);
const char* name = json_object_get_string(json_object_object_get(jobj_read, "name"));
printf("name: %s\n", name);
int age = json_object_get_int(json_object_object_get(jobj_read, "age"));
printf("age: %d\n", age);
// 釋放空間
json_object_put(jobj);
json_object_put(jobj_read);
return 0;
}
在這個案例中,我們首先需要創建一個 JSON 對象,并向其中添加鍵值。接著,我們需要將 JSON 對象寫入文件中。我們可以使用 fprintf 函數將 JSON 對象轉換成 JSON 字符串,并寫入到文件中。
當我們需要從文件中讀取 JSON 對象時,我們可以使用 fopen 函數打開文件,然后使用 fgets 函數從文件中讀取 JSON 字符串。接著,我們可以使用 json_tokener_parse 函數將 JSON 字符串解析成 JSON 對象。
最后,我們可以使用 json_object_object_get 函數獲取 JSON 對象中的鍵值,并使用 json_object_get_boolean、json_object_get_string、json_object_get_int 等函數獲取相應的鍵值。
需要注意的是,在使用完 JSON 對象時,我們需要使用 json_object_put 函數釋放 JSON 對象的空間。