JSON是一種輕量級(jí)的數(shù)據(jù)交換格式,它具有結(jié)構(gòu)清晰、易讀易寫(xiě)、易于解析等特點(diǎn),并且經(jīng)常被用于Web應(yīng)用程序之間的數(shù)據(jù)通信。在C語(yǔ)言中,我們可以利用幾個(gè)第三方庫(kù)來(lái)創(chuàng)建和解析JSON文件。
首先,我們需要安裝以下兩個(gè)庫(kù):
sudo apt-get install libjansson-dev sudo apt-get install libjson-c-dev
接下來(lái),我們來(lái)看看如何使用libjansson來(lái)創(chuàng)建JSON文件。以下是一個(gè)簡(jiǎn)單的示例:
#include <jansson.h> int main() { json_t* root = json_object(); //創(chuàng)建根節(jié)點(diǎn) json_t* array = json_array(); //創(chuàng)建JSON數(shù)組 for(int i = 0; i< 5; ++i) { json_t* json_obj = json_object(); //創(chuàng)建JSON對(duì)象 json_object_set_new(json_obj, "name", json_string("Tom")); //添加屬性 json_object_set_new(json_obj, "age", json_integer(20)); //添加屬性 json_array_append_new(array, json_obj); //將對(duì)象添加到數(shù)組中 } json_object_set_new(root, "students", array); //將數(shù)組添加到根節(jié)點(diǎn)中 json_dump_file(root, "students.json", JSON_INDENT(4)); //將JSON寫(xiě)入文件中,并且縮進(jìn)4個(gè)空格 json_decref(root); //釋放json_t對(duì)象 return 0; }
通過(guò)上面的代碼,我們可以生成如下的JSON文件:
{ "students": [ { "name": "Tom", "age": 20 }, { "name": "Tom", "age": 20 }, { "name": "Tom", "age": 20 }, { "name": "Tom", "age": 20 }, { "name": "Tom", "age": 20 } ] }
接下來(lái),我們來(lái)看看如何使用libjson-c來(lái)解析JSON文件。以下是一個(gè)簡(jiǎn)單的示例:
#include <stdio.h> #include <json-c/json.h> int main() { FILE* fp = fopen("students.json", "r"); //打開(kāi)JSON文件 char buf[1024] = {0}; fread(buf, 1, 1024, fp); //讀取文件內(nèi)容 json_object* root = json_tokener_parse(buf); //解析JSON json_object* array = NULL; if(json_object_object_get_ex(root, "students", &array)) { int array_len = json_object_array_length(array); //獲取數(shù)組長(zhǎng)度 for(int i = 0; i< array_len; ++i) { json_object* json_obj = json_object_array_get_idx(array, i); //獲取數(shù)組元素 json_object* name_obj = NULL; json_object* age_obj = NULL; if(json_object_object_get_ex(json_obj, "name", &name_obj) && json_object_object_get_ex(json_obj, "age", &age_obj)) { printf("name:%s,age:%d\n", json_object_get_string(name_obj), json_object_get_int(age_obj)); } } } json_object_put(root); //釋放json_object對(duì)象 fclose(fp); //關(guān)閉文件 return 0; }
通過(guò)上面的代碼,我們可以讀取如下的JSON文件:
name:Tom,age:20 name:Tom,age:20 name:Tom,age:20 name:Tom,age:20 name:Tom,age:20
到這里,我們就學(xué)會(huì)了使用C語(yǔ)言創(chuàng)建和解析JSON文件的基本方法。
上一篇python 正則平衡組
下一篇python 正則變量