在 C 語言中生成嵌套 JSON,需要使用一個(gè)遞歸函數(shù)來完成。我們可以將 JSON 對象表示為一個(gè)結(jié)構(gòu)體,其中包含了鍵值對和子對象的指針。下面是一個(gè)示例結(jié)構(gòu)體定義:
typedef struct json_object { char *key; char *value; struct json_object *next; struct json_object *subobject; } json_object;
其中,key 和 value 分別表示鍵和值,next 和 subobject 分別指向同級和子級的 JSON 對象。接下來,我們可以用遞歸函數(shù)生成 JSON 字符串。下面是一個(gè)示例函數(shù):
void generate_json(json_object *object, char *output) { if (object == NULL) { strcat(output, "null"); return; } strcat(output, "{"); while (object != NULL) { strcat(output, "\""); strcat(output, object->key); strcat(output, "\""); strcat(output, ":"); if (object->subobject != NULL) { strcat(output, "{"); generate_json(object->subobject, output); strcat(output, "}"); } else { strcat(output, "\""); strcat(output, object->value); strcat(output, "\""); } object = object->next; if (object != NULL) { strcat(output, ","); } } strcat(output, "}"); }
這個(gè)函數(shù)接收一個(gè) JSON 對象和一個(gè)輸出字符串,遞歸地遍歷對象并將其轉(zhuǎn)化為 JSON 字符串拼接到輸出字符串中。如果當(dāng)前對象的 subobject 不為空,遞歸地生成子對象的 JSON 字符串并拼接到輸出字符串中;否則直接拼接當(dāng)前對象的 value 值到輸出字符串中。最終將所有的 JSON 對象都生成完畢,輸出字符串中即包含了整個(gè) JSON 字符串。使用時(shí)只需要創(chuàng)建根節(jié)點(diǎn)的 JSON 對象,并調(diào)用 generate_json 函數(shù)生成 JSON 字符串即可。