我想使用下面的代码片段打印json数组,但它没有给出所需的结果。这是输出
{
"prefix": "standard",
"faceID": "42"
}
{
"prefix1": "standard2",
"faceID2": "44"
}
这是由以下代码段生成的:
#include <boost/serialization/string.hpp>
#include <string>
#include <sstream>
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>
using boost::property_tree::ptree;
using boost::property_tree::write_json;
void create_array(ptree parent)
{
std::stringstream oss;
write_json(oss,parent);
std::string serialized_strings(oss.str());
std::cout << oss.str() << std::endl;
}
int main()
{
ptree pt,pt1;
pt.put("prefix","standard");
pt.put("faceID",42);
create_array(pt);
pt1.put("prefix1","standard2");
pt1.put("faceID2",44);
create_array(pt1);
}
预期输出:
[
{
"prefix": "standard",
"faceID": "42"
},
{
"prefix1": "standard2",
"faceID2": "44"
}
]
答案 0 :(得分:1)
只是为了说清楚:
属性树数据集未键入,并且不支持数组。因此,使用以下JSON /属性树映射[...]
它继续描述每个ptree
始终代表一个JSON对象。
您需要记住Boost Property Tree 不是 JSON库。它是一个属性树库,可选择使用JSON的子集来实现互操作性。因此,您不能拥有任意JSON的东西:您不能拥有顶级数组,您不能拥有唯一的值,您不能拥有实际的数字类型,null,布尔等。
您只能将属性树序列化using the described mappings。