欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

c 構造層級json數據

榮姿康2年前7瀏覽0評論

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 對象并輸出為字符串。