我正在从树数据构造json,但是当我从node_level_1添加了node_level_2之后又从node_level_2添加了node_level_3时,node_level_2没有关于node_level_3的信息。 这是我的代码。
node_level_1 = new Json::Value();
(*node_level_1)["data"] = first_value;
if (some_other_string != "")
{
node_level_2 = new Json::Value();
(*node_level_2)["data"] = some_other_string ;
(*node_level_1)["child"].append(*node_level_2);
}
if (another_string!= "")
{
node_level_3 = new Json::Value();
(*node_level_3) ["data"] = another_string;
(*node_level_2) ["child"].append(*node_level_3 );
}
我猜问题是“ Json :: Value.append()函数”仅复制其数据,而不复制指针或引用。因此,如果我更改node_level_2的数据,则不会影响以前添加的node_level_2。
我该如何解决这个问题? 我是否应该遍历树的所有底部节点(第3级),并构造父树节点(第2级),最后将所有父级添加到根节点(第1级)?这是使用JsonCpp的唯一解决方案吗?