使用boost c ++创建Json数组

时间:2017-09-08 18:02:29

标签: c++ json boost

我想使用下面的代码片段打印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"
}
]

1 个答案:

答案 0 :(得分:1)

只是为了说清楚:

documentation表示

  

属性树数据集未键入,并且不支持数组。因此,使用以下JSON /属性树映射[...]

它继续描述每个ptree始终代表一个JSON对象。

您需要记住Boost Property Tree 不是 JSON库。它是一个属性树库,可选择使用JSON的子集来实现互操作性。因此,您不能拥有任意JSON的东西:您不能拥有顶级数组,您不能拥有唯一的值,您不能拥有实际的数字类型,null,布尔等。

您只能将属性树序列化using the described mappings