在C語(yǔ)言中,我們可以使用JSON庫(kù)來(lái)處理JSON數(shù)據(jù)。拼接多層JSON數(shù)據(jù)需要使用嵌套結(jié)構(gòu)體。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <json-c/json.h> int main() { /* 創(chuàng)建JSON對(duì)象 */ struct json_object *root = json_object_new_object(); struct json_object *innerObj = json_object_new_object(); struct json_object *arrayObj = json_object_new_array(); /* 添加鍵值對(duì)到innerObj中 */ json_object_object_add(innerObj, "name", json_object_new_string("Tom")); json_object_object_add(innerObj, "age", json_object_new_int(29)); /* 添加innerObj到root中 */ json_object_object_add(root, "user", innerObj); /* 添加數(shù)組元素到arrayObj中 */ json_object_array_add(arrayObj, json_object_new_string("apple")); json_object_array_add(arrayObj, json_object_new_string("banana")); json_object_array_add(arrayObj, json_object_new_string("orange")); /* 添加數(shù)組到root中 */ json_object_object_add(root, "fruit", arrayObj); /* 打印JSON字符串 */ char *jsonStr = json_object_to_json_string(root); printf("%s\n", jsonStr); /* 釋放內(nèi)存 */ json_object_put(root); return 0; }
以上代碼拼接了一個(gè)兩層的JSON數(shù)據(jù),內(nèi)部結(jié)構(gòu)為:
{ "user": { "name": "Tom", "age": 29 }, "fruit": [ "apple", "banana", "orange" ] }
我們可以使用json_object_new_object()和json_object_new_array()分別創(chuàng)建JSON對(duì)象和JSON數(shù)組,使用json_object_array_add()添加數(shù)組元素,使用json_object_object_add()添加鍵值對(duì)。
最后使用json_object_to_json_string()將JSON對(duì)象轉(zhuǎn)換為字符串。