提升ptree顶级数组

时间:2016-10-27 19:38:27

标签: c++ json boost ptree

我希望write_json输出一个顶级数组,其效果如下:

[{...},{...},{...},...,{...}]

但是当我将列表传递给write_json时,它会转换为一个充满空白键的json。

{"":{...},"":{...},"":{...},..."":{...}}

使用add_child实际上尊重数组并给我最接近的东西:

{"Some Key":[{...},{...},{...},...,{...}]}

但那仍然不是我想要的。

任何想法如何使该阵列达到最高水平?

1 个答案:

答案 0 :(得分:1)

Boost没有JSON库(也没有XML库)。它有一个属性树库(恰好包含一个JSON兼容的表示)。

您遇到的限制完全清楚地记录在那里:http://www.boost.org/doc/libs/1_62_0/doc/html/property_tree/parsers.html#property_tree.parsers.json_parser

  

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

     
      
  • JSON对象映射到节点。每个属性都是子节点。
  •   
  • JSON数组映射到节点。每个元素都是一个空名称的子节点。如果节点同时具有命名和未命名子节点,则无法将其映射到JSON表示。
  •   
  • JSON值映射到包含该值的节点。但是,所有类型信息都丢失了;数字,以及文字“null”,“true”和“false”只是简单地映射到它们的字符串形式。
  •   
  • 无法映射包含子节点和数据的属性树节点。
  •   
  • JSON往返,但类型信息丢失除外。
  •   

接着展示了你遇到的一个例子。