JSON(JavaScript Object Notation)是一種輕量級(jí)的數(shù)據(jù)交換格式,它使用易于人類閱讀和編寫的文本格式來(lái)表示數(shù)據(jù)。
C語(yǔ)言有許多庫(kù)可以用來(lái)解析和生成JSON數(shù)據(jù)。常見(jiàn)的有jansson、cJSON、json-c等。
#include <stdio.h> #include <jansson.h> int main() { json_t *root = json_pack("{s:s, s:i, s:b}", "name", "John", "age", 30, "is_male", 1); char *json_str = json_dumps(root, JSON_INDENT(4)); printf("%s\n", json_str); free(json_str); json_decref(root); return 0; }
上面是使用jansson庫(kù)生成一個(gè)JSON數(shù)據(jù)的示例代碼。首先定義一個(gè)json_t類型的指針root,調(diào)用json_pack函數(shù)生成一個(gè)JSON對(duì)象,并賦值給root。
json_pack的第一個(gè)參數(shù)是一個(gè)格式字符串,指定JSON對(duì)象的結(jié)構(gòu)。其中,s表示字符串類型,i表示整數(shù)類型,b表示布爾類型。
用json_dumps函數(shù)將root指向的JSON對(duì)象轉(zhuǎn)換為字符串,并用JSON_INDENT宏將結(jié)果縮進(jìn)格式化。最后打印輸出生成的JSON字符串。
釋放生成的JSON字符串和JSON對(duì)象內(nèi)存的方式是free和json_decref函數(shù),分別對(duì)應(yīng)C語(yǔ)言中的動(dòng)態(tài)內(nèi)存分配和引用計(jì)數(shù)內(nèi)存管理。