1. ホーム
  2. c++

[解決済み] 複数のルート要素を含むJSONファイルを読み込むには?

2022-02-16 02:21:02

質問

もし、こんな内容のファイルがあったら。

{"one": 1}
{"two": 2}

単純に別々の行を別々のJSONオブジェクトとしてパースすることができました( JsonCpp ). しかし、もしファイルの構造がこのようにあまり便利でなかったらどうでしょう。

{
   "one":1
}

{
   "two":2
}

解決方法は?

質問の例はどちらも有効なJSONオブジェクトではない; JSONオブジェクトが持つことができるのは 一つ のルートです。ファイルを2つのオブジェクトに分割し、それらをパースする必要があります。

を使用することができます。 http://jsonlint.com を使えば、与えられた文字列が有効なJSONであるかどうかを確認することができます。

ですから、複数のJSONオブジェクトを1つのファイルにダンプしているものを変更して別々のファイルで行うか、1つのJSONルートオブジェクトにそれぞれのオブジェクトを値として入れることをお勧めします。

もし、これらのオブジェクトを作成しているものをコントロールできなければ、自分でファイルを解析して異なるルートオブジェクトを選び出すしかありません。

ここでは、それらのデータをJSONオブジェクトにエンコードする有効な方法を紹介します。

{
    "one": 1,
    "two": 2
}

どうしても別々のオブジェクトが必要な場合は、このようにすることもできます。

{
    "one":
    {
        "number": 1
    },
    "two":
    {
        "number": 2
    }
}