【问题标题】:Boost ptree top level array提升 ptree 顶级数组
【发布时间】:2017-03-10 15:05:25
【问题描述】:

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

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

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

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

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

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

但这仍然不是我想要的。

知道如何使该数组成为顶级吗?

【问题讨论】:

    标签: c++ json boost ptree


    【解决方案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 往返,类型信息丢失除外。

    它继续展示了您遇到的确切情况的示例。

    【讨论】:

      猜你喜欢
      • 2017-05-27
      • 2015-12-16
      • 2017-12-28
      • 2016-07-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多