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

c 生成樹形json數據結構

錢琪琛1年前9瀏覽0評論

在現如今的互聯網時代,JSON已經逐漸成為數據交換的標準格式。生成JSON數據結構是數據傳輸的基礎,而生成樹形JSON數據結構則更能方便地展示信息。

在C語言中,可以采用遞歸的方式生成樹形JSON數據結構。下面是一份示例代碼:

#include// 定義節點結構體,包含節點名、節點類型和子節點指針
typedef struct node {
char *name;
int type;
struct node *child;
} node;
node* create_node(char *name, int type);
void add_child(node *parent, node *child);
char* generate_json(node *root);
// 創建一個節點
node* create_node(char *name, int type) {
node *new_node = (node*)malloc(sizeof(node));
new_node->name = name;
new_node->type = type;
new_node->child = NULL;
return new_node;
}
// 為某個節點添加子節點
void add_child(node *parent, node *child) {
node *curr = parent->child;
if (curr == NULL) {
parent->child = child;
} else {
while (curr->child != NULL) {
curr = curr->child;
}
curr->child = child;
}
}
// 遞歸生成樹形JSON數據結構
char* generate_json(node *root) {
char *json = (char*)malloc(sizeof(char)*512);
char *temp = NULL;
switch (root->type) {
case 0:
sprintf(json, "{\"%s\":{", root->name);
break;
case 1:
sprintf(json, "\"%s\":[", root->name);
break;
case 2:
sprintf(json, "{\"%s\":\"%s\"}", root->name, root->child->name);
return json;
}
node *child = root->child;
while (child != NULL) {
temp = generate_json(child);
strcat(json, temp);
if (child->child != NULL) {
strcat(json, ",");
}
child = child->child;
}
if (root->type == 1) {
strcat(json, "]");
}
strcat(json, "}");
return json;
}
int main() {
node *root = create_node("root", 0);
node *node1 = create_node("node1", 0);
node *node2 = create_node("node2", 1);
node *node2_child1 = create_node("node2_child1", 2);
node *node2_child2 = create_node("node2_child2", 2);
node *node3 = create_node("node3", 0);
add_child(root, node1);
add_child(root, node2);
add_child(root, node3);
add_child(node2, node2_child1);
add_child(node2, node2_child2);
char *json = generate_json(root);
printf("%s", json);
free(root);
free(node1);
free(node2);
free(node2_child1);
free(node2_child2);
free(node3);
free(json);
return 0;
}

代碼中定義了一個節點結構體,包含節點名、節點類型(0代表對象,1代表數組,2代表字符串)和子節點指針。程序通過遞歸方式遍歷節點,生成對應的JSON字符串。

生成樹形JSON數據結構在C語言中可以采用遞歸方式實現,遞歸方便擴展節點,靈活性較好。通過該方法,可以方便地展示樹形結構數據信息。