在 C 語言中生成嵌套 JSON,需要使用一個遞歸函數來完成。我們可以將 JSON 對象表示為一個結構體,其中包含了鍵值對和子對象的指針。下面是一個示例結構體定義:
typedef struct json_object { char *key; char *value; struct json_object *next; struct json_object *subobject; } json_object;
其中,key 和 value 分別表示鍵和值,next 和 subobject 分別指向同級和子級的 JSON 對象。接下來,我們可以用遞歸函數生成 JSON 字符串。下面是一個示例函數:
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, "}"); }
這個函數接收一個 JSON 對象和一個輸出字符串,遞歸地遍歷對象并將其轉化為 JSON 字符串拼接到輸出字符串中。如果當前對象的 subobject 不為空,遞歸地生成子對象的 JSON 字符串并拼接到輸出字符串中;否則直接拼接當前對象的 value 值到輸出字符串中。最終將所有的 JSON 對象都生成完畢,輸出字符串中即包含了整個 JSON 字符串。使用時只需要創建根節點的 JSON 對象,并調用 generate_json 函數生成 JSON 字符串即可。