JSON(JavaScript Object Notation,JavaScript對(duì)象表示法)是一種輕量級(jí)的數(shù)據(jù)交換格式,易于閱讀和編寫(xiě)。在C語(yǔ)言中,我們可以使用第三方庫(kù)jansson來(lái)處理JSON。
首先,我們需要在代碼中包含jansson庫(kù)的頭文件:
#include <jansson.h>
然后,我們可以使用jansson庫(kù)提供的函數(shù)創(chuàng)建、解析、訪(fǎng)問(wèn)和修改JSON對(duì)象。比如,我們可以使用下面的代碼創(chuàng)建一個(gè)JSON對(duì)象:
json_t *obj = json_object(); json_object_set_new(obj, "name", json_string("Alice")); json_object_set_new(obj, "age", json_integer(25));
這個(gè)JSON對(duì)象包含兩個(gè)鍵值對(duì),"name"對(duì)應(yīng)的值是字符串"Alice","age"對(duì)應(yīng)的值是整數(shù)25。
我們也可以從字符串中解析JSON對(duì)象:
const char *str = "{\"name\": \"Bob\", \"age\": 30}"; json_error_t error; json_t *obj = json_loads(str, 0, &error);
這個(gè)JSON對(duì)象包含兩個(gè)鍵值對(duì),"name"對(duì)應(yīng)的值是字符串"Bob","age"對(duì)應(yīng)的值是整數(shù)30。
我們可以使用下面的代碼訪(fǎng)問(wèn)JSON對(duì)象的值:
json_t *name_value = json_object_get(obj, "name"); const char *name = json_string_value(name_value); json_t *age_value = json_object_get(obj, "age"); int age = json_integer_value(age_value);
注意,如果JSON對(duì)象中不存在某個(gè)鍵,那么json_object_get函數(shù)返回NULL。
最后,我們需要釋放JSON對(duì)象的內(nèi)存:
json_decref(obj);
這里的json_decref函數(shù)類(lèi)似于C++中的delete,用于釋放JSON對(duì)象的內(nèi)存。