在C語言中生成多層JSON數據是一項非常重要的任務,尤其是在網絡應用和Web開發中。下面我們將詳細介紹如何使用C語言生成多層JSON數據。
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_LENGTH 256 struct JSON { char key[MAX_LENGTH]; char value[MAX_LENGTH]; struct JSON* next; struct JSON* child; }; struct JSON* create_json() { struct JSON* json = (struct JSON*)malloc(sizeof(struct JSON)); json->next = NULL; json->child = NULL; memset(json->key, 0, sizeof(json->key)); memset(json->value, 0, sizeof(json->value)); return json; } void add_object_child(struct JSON* parent, struct JSON* child) { if (parent->child == NULL) { parent->child = child; } else { struct JSON* last_child = parent->child; while (last_child->next != NULL) { last_child = last_child->next; } last_child->next = child; } } char* json_to_string(struct JSON* json) { if (json == NULL) { return ""; } char* str = (char*)malloc(MAX_LENGTH * sizeof(char)); memset(str, 0, MAX_LENGTH); strcat(str, "{"); // 處理key和value strcat(str, "\""); strcat(str, json->key); strcat(str, "\":\""); strcat(str, json->value); strcat(str, "\""); // 處理child if (json->child != NULL) { strcat(str, json_to_string(json->child)); } // 處理next if (json->next != NULL) { strcat(str, ","); strcat(str, json_to_string(json->next)); } strcat(str, "}"); return str; } int main() { struct JSON* json1 = create_json(); strcpy(json1->key, "name"); strcpy(json1->value, "John"); struct JSON* json2 = create_json(); strcpy(json2->key, "age"); strcpy(json2->value, "20"); add_object_child(json1, json2); struct JSON* json3 = create_json(); strcpy(json3->key, "phone"); strcpy(json3->value, "123456789"); add_object_child(json1, json3); char* json_str = json_to_string(json1); printf("%s", json_str); free(json1); free(json2); free(json3); free(json_str); return 0; }
在這個示例中,我們創建了一個簡單的JSON對象并將其轉換為字符串。你可以根據需要修改和擴展此代碼,以生成更復雜的JSON數據。