在C語言中生成樹形結構的JSON數據時,通常需要使用遞歸函數來完成。以下為一個示例的樹形結構:
{ "name": "root", "children": [{ "name": "child1", "children": [{ "name": "grandchild1", "children": [] }, { "name": "grandchild2", "children": [] } ] }, { "name": "child2", "children": [{ "name": "grandchild3", "children": [] }, { "name": "grandchild4", "children": [] } ] } ] }
上述結構中,每個節點都有名稱和一組子節點(數組)。下面是一個遞歸函數的示例,用于創建上述JSON數據:
void create_node(json_object *parent, char *name, int depth) { json_object *node = json_object_new_object(); json_object_object_add(node, "name", json_object_new_string(name)); json_object *children_arr = json_object_new_array(); int children_count = rand() % 4; // 隨機生成0-3的子節點數 for (int i = 0; i< children_count; i++) { char* child_name = generate_random_name(); create_node(children_arr, child_name, depth + 1); } json_object_object_add(node, "children", children_arr); json_object_array_add(parent, node); }
在這個函數中,我們可能需要使用其他幾個輔助函數來生成隨機名稱等。在主函數中,我們可以這樣調用這個函數來創建JSON:
char *root_name = "root"; json_object *root = json_object_new_object(); create_node(root, root_name, 0); char *json_str = json_object_to_json_string(root);
最后生成的 `json_str` 便是上面所示的樹形結構的JSON數據。