C語言是一種廣泛應用于嵌入式和系統底層開發的編程語言。在C語言中,我們可以用結構體來定義復雜的層級數據結構。而對于web應用來說,JSON是一種非常流行的數據交換格式。本文將介紹如何在C語言中構造層級JSON數據。
#include#include #include #define MAX_STR_SIZE 1024 /* 定義 JSON 數據結構 */ typedef struct _json { char *key; char *value; struct _json *next; struct _json *child; } JSON; /* 生成一個新的 JSON 對象 */ JSON *new_json(char *key, char *value) { JSON *json = (JSON *)malloc(sizeof(JSON)); json->key = strdup(key); json->value = strdup(value); json->next = NULL; json->child = NULL; return json; } /* 將 JSON 對象轉換為字符串 */ char *json_to_string(JSON *json) { char *str = (char *)malloc(MAX_STR_SIZE * sizeof(char)); sprintf(str, "{"); JSON *cursor = json; while (cursor != NULL) { strcat(str, "\""); strcat(str, cursor->key); strcat(str, "\":"); strcat(str, "\""); strcat(str, cursor->value); strcat(str, "\""); if (cursor->child != NULL) { strcat(str, ","); strcat(str, json_to_string(cursor->child)); } else if (cursor->next != NULL) { strcat(str, ","); } cursor = cursor->next; } strcat(str, "}"); return str; } int main() { /* 構造一個嵌套 JSON 對象 */ JSON *root = new_json("name", "Tom"); JSON *child1 = new_json("phone", "123456789"); JSON *child2 = new_json("address", "Beijing"); JSON *child3 = new_json("age", "20"); root->child = child1; child1->next = child2; child2->next = child3; /* 轉換為字符串并輸出 */ printf("%s", json_to_string(root)); /* 釋放內存 */ free(root->key); free(root->value); free(child1->key); free(child1->value); free(child2->key); free(child2->value); free(child3->key); free(child3->value); free(root); free(child1); free(child2); free(child3); return 0; }
在上述代碼中,我們定義了一個 JSON 結構體,包含 key、value、next、child 四個成員變量。其中 key 和 value 分別表示 JSON 中的鍵和值,next 和 child 分別表示同級和下一級 JSON 對象。我們使用 new_json 函數來創建新的 JSON 對象,使用 json_to_string 函數將 JSON 對象轉換為字符串。最后,我們構造了一個嵌套結構的 JSON 對象并輸出為字符串。