2

write_jsonトップレベルの配列を出力したいと思います。次のような効果があります。

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

しかし、リストを に渡すとwrite_json、空のキーでいっぱいの json に変換されます。

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

実際に使用add_childすると、配列が尊重され、次の最も近いものが得られます。

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

しかし、それはまだ私が望むものではありません。

その配列をトップレベルにする方法はありますか?

4

1 に答える 1

2

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 ラウンドトリップ。

それは、あなたが遭遇した正確な例を示しています。

于 2016-10-28T10:31:56.817 に答える