JSON是一種輕量級(jí)的數(shù)據(jù)交換格式,由于它的簡(jiǎn)潔、易讀、易解析等特點(diǎn),越來(lái)越受到開(kāi)發(fā)者的青睞。在C語(yǔ)言中,我們可以通過(guò)結(jié)構(gòu)體定義一個(gè)“實(shí)體類”,然后用JSON傳遞這個(gè)結(jié)構(gòu)體的數(shù)據(jù)。
typedef struct{ char name[20]; int age; char gender[10]; } Person;
上面的代碼定義了一個(gè)Person結(jié)構(gòu)體,它包含三個(gè)成員:name、age和gender。為了在C語(yǔ)言中將這個(gè)結(jié)構(gòu)體轉(zhuǎn)換成JSON字符串,我們可以使用json-c這個(gè)庫(kù)。下面是一個(gè)將Person結(jié)構(gòu)體轉(zhuǎn)換成JSON字符串的示例代碼:
#include <json-c/json.h> #include <stdio.h> int main() { Person p = {"Alice", 20, "female"}; json_object *jobj = json_object_new_object(); json_object_object_add(jobj, "name", json_object_new_string(p.name)); json_object_object_add(jobj, "age", json_object_new_int(p.age)); json_object_object_add(jobj, "gender", json_object_new_string(p.gender)); printf("%s\n", json_object_to_json_string(jobj)); return 0; }
上面的代碼使用了json_object_new_object()函數(shù)創(chuàng)建了一個(gè)JSON對(duì)象,然后用json_object_object_add()函數(shù)往對(duì)象中添加了三個(gè)成員。其中,json_object_new_string()和json_object_new_int()函數(shù)用于將C語(yǔ)言中的字符串和整數(shù)轉(zhuǎn)換成JSON字符串。
需要注意的是,json-c庫(kù)不支持直接將一個(gè)結(jié)構(gòu)體轉(zhuǎn)換成JSON字符串,所以我們需要手動(dòng)將結(jié)構(gòu)體中的每個(gè)成員轉(zhuǎn)換成JSON格式,并添加到JSON對(duì)象中。這樣,我們就可以將這個(gè)JSON對(duì)象轉(zhuǎn)換成字符串,然后在網(wǎng)絡(luò)傳輸或者存儲(chǔ)到本地文件中。