gpt4 book ai didi

c++ - 使用属性树在 Boost 中创建 JSON 数组

转载 作者:IT老高 更新时间:2023-10-28 12:12:16 27 4
gpt4 key购买 nike

我正在尝试使用 boost 属性树创建一个 JSON 数组。

documentation说:“JSON 数组映射到节点。每个元素都是一个空名称的子节点。”

所以我想创建一个名称为空的属性树,然后调用 write_json(...) 来获取数组。但是,文档并没有告诉我如何创建未命名的子节点。我试过 ptree.add_child("", value),但这会产生:

Assertion `!p.empty() && "Empty path not allowed for put_child."' failed

文档似乎没有解决这一点,至少我无法弄清楚。有人可以帮忙吗?

最佳答案

简单数组:

#include <boost/property_tree/ptree.hpp>
using boost::property_tree::ptree;

ptree pt;
ptree children;
ptree child1, child2, child3;

child1.put("", 1);
child2.put("", 2);
child3.put("", 3);

children.push_back(std::make_pair("", child1));
children.push_back(std::make_pair("", child2));
children.push_back(std::make_pair("", child3));

pt.add_child("MyArray", children);

write_json("test1.json", pt);

结果:

{
"MyArray":
[
"1",
"2",
"3"
]
}

对象上的数组:

ptree pt;
ptree children;
ptree child1, child2, child3;


child1.put("childkeyA", 1);
child1.put("childkeyB", 2);

child2.put("childkeyA", 3);
child2.put("childkeyB", 4);

child3.put("childkeyA", 5);
child3.put("childkeyB", 6);

children.push_back(std::make_pair("", child1));
children.push_back(std::make_pair("", child2));
children.push_back(std::make_pair("", child3));

pt.put("testkey", "testvalue");
pt.add_child("MyArray", children);

write_json("test2.json", pt);

结果:

{
"testkey": "testvalue",
"MyArray":
[
{
"childkeyA": "1",
"childkeyB": "2"
},
{
"childkeyA": "3",
"childkeyB": "4"
},
{
"childkeyA": "5",
"childkeyB": "6"
}
]
}

希望对你有帮助

关于c++ - 使用属性树在 Boost 中创建 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2114466/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com