隨著互聯網的發展,我們需要越來越多的信息存儲方式來存儲海量的數據。C語言是一種廣泛使用的編程語言,在開發過程中,我們經常需要將數據持久化到磁盤上。而JSON是一種常用的數據格式,也是一種常見的持久化數據的方式。
在C語言中,我們可以使用JSON-c庫來將對象持久化成JSON格式。在使用時,我們需要先安裝JSON-c庫,并將其引入到項目中。
#include <stdio.h> #include <json-c/json.h> #define FILENAME "data.json" struct person { char name[30]; int age; }; int main() { struct person p1 = { "Tom", 20 }; // 創建json對象 json_object *jobj = json_object_new_object(); // 添加屬性 json_object_object_add(jobj, "name", json_object_new_string(p1.name)); json_object_object_add(jobj, "age", json_object_new_int(p1.age)); // 將json對象寫入文件 FILE *fp = fopen(FILENAME, "w"); fputs(json_object_to_json_string(jobj), fp); fclose(fp); // 讀取json文件 fp = fopen(FILENAME, "r"); char buf[1024]; fread(buf, sizeof(char), 1024, fp); fclose(fp); // 將JSON格式轉換為json對象 json_object *result = json_tokener_parse(buf); // 獲取屬性 json_object *name; json_object *age; json_object_object_get_ex(result, "name", &name); json_object_object_get_ex(result, "age", &age); printf("name: %s, age: %d\n", json_object_get_string(name), json_object_get_int(age)); return 0; }
上述示例代碼中,我們先定義了一個person結構體,然后將其中的兩個屬性添加到一個新的json對象中。最后,我們將json對象持久化到磁盤上。
在讀取json文件時,我們先將文件內容讀取到內存中,然后利用json_tokener_parse方法將其轉換為json對象,再從中獲取需要的屬性。
總體來說,使用JSON-c庫可以輕松地將C語言中的結構體和對象持久化到磁盤上,方便數據的存儲和讀取。