在 C 語(yǔ)言中生成 JSON 時(shí),我們經(jīng)常會(huì)遇到一個(gè)需要嵌套生成 JSON 的場(chǎng)景。在這種情況下,我們需要使用 C 語(yǔ)言的數(shù)據(jù)結(jié)構(gòu)來處理 JSON 的嵌套結(jié)構(gòu)。
在開始之前,我們需要安裝一個(gè) C 語(yǔ)言的 JSON 庫(kù),例如 cJSON。cJSON 是一個(gè)輕量級(jí)的 JSON 解析和生成庫(kù),可以很方便地實(shí)現(xiàn) JSON 的生成和解析。
首先,我們需要定義一個(gè) cJSON 對(duì)象,并初始化:
cJSON *root = cJSON_CreateObject();
然后,我們可以像下面這樣添加一個(gè)嵌套的 JSON 對(duì)象:
cJSON *subObj = cJSON_CreateObject(); cJSON_AddItemToObject(root, "subObj", subObj);
在上面的代碼中,我們使用 cJSON_CreateObject 函數(shù)創(chuàng)建了一個(gè)空白的 cJSON 對(duì)象。然后,我們使用 cJSON_AddItemToObject 函數(shù)將創(chuàng)建的 cJSON 對(duì)象添加到了 root cJSON 對(duì)象中。
接下來,我們?cè)偬砑右粋€(gè)嵌套的 JSON 數(shù)組:
cJSON *subArr = cJSON_CreateArray(); cJSON_AddItemToObject(root, "subArr", subArr);
在上面的代碼中,我們同樣使用 cJSON_CreateArray 函數(shù)創(chuàng)建了一個(gè) cJSON 數(shù)組對(duì)象,然后使用 cJSON_AddItemToObject 將其添加到了 root cJSON 對(duì)象中。
最后,我們可以使用 cJSON_Print 函數(shù)將 cJSON 對(duì)象轉(zhuǎn)換成 JSON 字符串輸出。
char *jsonStr = cJSON_Print(root); printf("%s\n", jsonStr);
上面的代碼中,我們使用 cJSON_Print 函數(shù)將 cJSON 對(duì)象轉(zhuǎn)換成了 JSON 字符串,并將其輸出到了控制臺(tái)。
總的來說,生成嵌套 JSON 的過程與生成普通的 JSON 差不多。我們只需要將需要嵌套的 JSON 對(duì)象或數(shù)組作為一個(gè) cJSON 對(duì)象添加到父 cJSON 對(duì)象中即可。