2017-05-27 4 views
1

私は、その中に含まれているディレクトリの内部内容を記述するために、単一のJSONファイルを使用するプロジェクトを持っています。 Boostプロパティツリーライブラリは、JSON解析ライブラリにとって最適な選択肢です。しかし、このJSONファイル(他の多くのものと同様)は非常に特殊なレイアウトを持つことが予想されていますが、これまでのところ、コード内でルールを表現する良い方法は見つかりませんでした。Boostプロパティツリーには、解析するデータのルールを定義するメソッドがありますか?

Boostプロパティツリーライブラリには、次のいずれかの操作を実行できるメソッドがありますか?

  • 認識できないキーを許可しない。
  • キーを必須またはオプションとして指定します。
  • キーの期待値タイプ(null、bool、int、float、array、dictionary)を指定します。

これまでのところ私は、データ構造にいくつかのJSONのキーと値のペアを変換する方法についていくつかの光を照らすthis previous questionを見つけたが、上記の機能のいずれかが可能であるかどうか、それは答えません。

+1

"* Boostプロパティツリーライブラリは、JSON解析ライブラリにとって最適な選択肢です* *"なぜですか?なぜ* JSONパーサとして**プロパティツリーライブラリ**を使用することを主張するのですか? RapidJSONは実際に*使用するのは難しいですか? –

+2

私の考えをエコーするための@NicolBolasありがとうございました。私はこれを何百回も繰り返してきました。 – sehe

答えて

1

プロパティツリーは、タイプの欠如(seheが指摘するように)を理由に私をあきらめるのに時間がかかりませんでした。

seheの推奨事項をさらに踏まえて、JSONを扱う場合は、代わりにnlohmann's libraryのような使いやすいライブラリをお勧めします。合理的に速く、直感的です。

メモリ割り当てのすべてのビットに執着し、ユーザビリティに影響を与えるRapidJSONもありますが、それ自体ではtestsの中で最高のパフォーマーです。 nlohmann'sに移動する前に、単一アイテムの配列を扱うのが困難でした。

4

指定された機能のどれもサポートされていません。

さらに、プロパティツリーはJSONデータ型をサポートしていません。 JSON側では、何があってもすべてが文字列になります。

Ohと配列は直接サポートされていません。醜いkludgeに備えてください。

これらはすべてプロパティツリーのJSONバックエンドを説明する20行ほどのドキュメントにあります。

これらの制限のため、スマートにして、要件を構築するためのJSONライブラリを選択してください。

関連する問題