Boost ptree顶层数组

Boost ptree top level array

本文关键字:数组 ptree Boost      更新时间:2023-10-16

我想让write_json输出一个顶级数组,达到以下效果:

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

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

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

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

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

但那仍然不是我想要的。

知道如何使数组顶层吗?

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"answers"false"被简单地映射到它们的字符串形式。
  • 不能映射同时包含子节点和数据的属性树节点。
  • JSON往返,除了类型信息丢失。

下面是一个你会遇到的例子