C語言是一種比較底層的編程語言,但是它也可以用來操作json文件。
首先,我們需要用到一個叫做json-c的庫。這個庫提供了一些函數,可以讓我們在C語言中讀寫json文件。
#include <stdio.h>
#include <json-c/json.h>
int main() {
// 讀取json文件
FILE *fp;
fp = fopen("example.json", "r");
if (fp == NULL) {
printf("無法打開文件!\n");
return 1;
}
// 解析json數據
fseek(fp, 0, SEEK_END);
long size = ftell(fp);
fseek(fp, 0, SEEK_SET);
char *str = (char*) malloc(size + 1);
fread(str, 1, size, fp);
fclose(fp);
json_object *jobj;
jobj = json_tokener_parse(str);
free(str);
// 讀取json數據
json_object *name = NULL;
json_object *age = NULL;
json_object_object_get_ex(jobj, "name", &name);
json_object_object_get_ex(jobj, "age", &age);
printf("姓名:%s\n", json_object_get_string(name));
printf("年齡:%d\n", json_object_get_int(age));
// 寫入json數據
json_object *new_obj = json_object_new_object();
json_object *new_name = json_object_new_string("zhangsan");
json_object *new_age = json_object_new_int(20);
json_object_object_add(new_obj, "name", new_name);
json_object_object_add(new_obj, "age", new_age);
fp = fopen("new_example.json", "w");
if (fp == NULL) {
printf("無法打開文件!\n");
return 1;
}
fprintf(fp, "%s\n", json_object_to_json_string(new_obj));
fclose(fp);
json_object_put(jobj);
json_object_put(new_obj);
return 0;
}
在上面的代碼中,我們首先打開一個名為example.json的文件,并讀取其中的json數據。接著使用json_tokener_parse()函數將讀取到的數據解析為一個json_object類型的對象。
我們可以通過調用json_object_object_get_ex()函數來獲取對象中的屬性值,并使用json_object_get_*()函數將其轉換為相應的類型。
當我們需要寫入json數據時,我們可以使用json_object_new_*()函數創建一個新的json對象,并使用json_object_object_add()函數將其添加到一個json_object類型的對象中。最后通過json_object_to_json_string()函數將這個對象轉換成json格式的字符串,并將其寫入到一個新的文件中。
在程序的最后,我們必須使用json_object_put()函數釋放之前創建的json_object類型的對象,以免出現內存泄露。