在C語言中,生成樹狀JSON格式的數據結構是一項常見的任務。通過遞歸函數,可以輕松地遍歷樹狀結構,并將其轉換為JSON格式。下面我們將介紹如何使用C語言遞歸函數生成樹狀JSON格式的數據結構。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdbool.h> #define MAX_CHILDREN 10 typedef struct node { char name[256]; struct node *children[MAX_CHILDREN]; int num_children; } node; node *create_node(char *name) { node *new_node = malloc(sizeof(node)); strcpy(new_node->name, name); new_node->num_children = 0; return new_node; } void add_child(node *parent, node *child) { parent->children[parent->num_children] = child; parent->num_children++; } void free_tree(node *root) { if (root == NULL) { return; } for (int i = 0; i < root->num_children; i++) { free_tree(root->children[i]); } free(root); } void print_json(node *root) { printf("{\n"); printf("\"name\":\"%s\",\n", root->name); printf("\"children\":[\n"); for (int i = 0; i < root->num_children; i++) { print_json(root->children[i]); if (i < root->num_children - 1) { printf(","); } printf("\n"); } printf("]\n}"); } int main() { node *root = create_node("A"); node *b = create_node("B"); add_child(root, b); add_child(b, create_node("C")); add_child(b, create_node("D")); add_child(root, create_node("E")); print_json(root); free_tree(root); return 0; }
上述代碼中定義了一個節點的結構體node,每個節點包含一個名稱和一個指向子節點數組的指針。通過create_node函數可以創建新的節點。add_child函數可以將子節點添加到父節點的子節點列表中。free_tree函數用于釋放整個樹的內存。print_json函數使用遞歸方法,遍歷整個樹狀結構,并將其轉換為JSON格式。
在上述示例中,創建了一個名為A的根節點,兩個子節點B和E。在B節點中添加了兩個子節點C和D。通過調用print_json函數,可以將整個樹狀結構轉換為JSON格式并打印出來。
上一篇c 遞歸json
下一篇vue css動畫插件