使用C語言編寫JSON字符串可以很方便地實(shí)現(xiàn)數(shù)據(jù)傳輸和存儲,JSON字符串通常由鍵值對和數(shù)組組成,可以使用C的數(shù)據(jù)結(jié)構(gòu)來表示,然后通過一定的方法將其轉(zhuǎn)化為JSON字符串。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <jansson.h> int main(){ json_t *root; //定義JSON根節(jié)點(diǎn) json_t *array; //定義數(shù)組節(jié)點(diǎn) json_t *obj; //定義對象節(jié)點(diǎn) json_t *name; //定義鍵值對中的鍵節(jié)點(diǎn) json_t *value; //定義鍵值對中的值節(jié)點(diǎn) root = json_object(); //創(chuàng)建根節(jié)點(diǎn) array = json_array(); //創(chuàng)建數(shù)組節(jié)點(diǎn) obj = json_object(); //創(chuàng)建對象節(jié)點(diǎn) //給對象節(jié)點(diǎn)添加鍵值對 name = json_string("name"); value = json_string("Tom"); json_object_set(obj, "name", value); //將對象節(jié)點(diǎn)添加到數(shù)組中 json_array_append(array, obj); //將數(shù)組節(jié)點(diǎn)添加到根節(jié)點(diǎn)中 json_object_set(root, "data", array); //將JSON數(shù)據(jù)轉(zhuǎn)化為字符串 char *json_str = json_dumps(root, JSON_INDENT(4)); printf("%s", json_str); //釋放內(nèi)存 json_decref(root); free(json_str); return 0; }
如上述代碼所示,首先需要創(chuàng)建JSON根節(jié)點(diǎn)、數(shù)組節(jié)點(diǎn)和對象節(jié)點(diǎn),然后向?qū)ο蠊?jié)點(diǎn)中添加鍵值對,將對象節(jié)點(diǎn)添加到數(shù)組中,再將數(shù)組節(jié)點(diǎn)添加到根節(jié)點(diǎn)中。最后,通過使用json_dumps函數(shù)將JSON數(shù)據(jù)轉(zhuǎn)化為字符串并輸出到控制臺上。
除了json_dumps函數(shù),還有一些其他的函數(shù)可以將JSON數(shù)據(jù)轉(zhuǎn)換為字符串,例如json_dump_file函數(shù)可以將JSON數(shù)據(jù)輸出到文件中,json_dump_callback函數(shù)可以將JSON數(shù)據(jù)輸出到回調(diào)函數(shù)中。