Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ boostptree顶级阵列_C++_Json_Boost_Ptree - Fatal编程技术网

C++ boostptree顶级阵列

C++ boostptree顶级阵列,c++,json,boost,ptree,C++,Json,Boost,Ptree,我想让write_json输出一个顶级数组,效果如下: [{...},{...},{...},...,{...}] 但当我将一个列表传递给write_json时,它会转换为一个充满空白键的json {"":{...},"":{...},"":{...},..."":{...}} 使用add_child实际上尊重数组,并为我提供最接近的内容: {"Some Key":[{...},{...},{...},...,{...}]} 但那仍然不是我想要的 您知道如何使该阵列成为顶级阵列吗?Boos

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

[{...},{...},{...},...,{...}]
但当我将一个列表传递给
write_json
时,它会转换为一个充满空白键的json

{"":{...},"":{...},"":{...},..."":{...}}
使用
add_child
实际上尊重数组,并为我提供最接近的内容:

{"Some Key":[{...},{...},{...},...,{...}]}
但那仍然不是我想要的


您知道如何使该阵列成为顶级阵列吗?

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

您遇到的限制在这里有清楚的记录:

属性树数据集不是类型化的,因此不支持数组。因此,使用了以下JSON/属性树映射:

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