ファイルから読み取った json オブジェクトを解析しようとしています。json-cppはそれらを好まないため(jsonで違法ではない場合でも)、重複したキーを特定したいと思います。
私が言えるようにする必要があります: エラー: あなたの json ファイルには重複したキーがあり、私たちはそれが好きではありません.
Json::Reader reader(Json::Features::strictMode());
strictMode でリーダーを使用してもうまくいきません。
設定
rejectDupKeys
の
void Json::CharReaderBuilder::setDefaults ( Json::Value * settings )
すぐに使える方法はありませんが、その機能をプログラムすることはできます。マップを使用してオブジェクト キーを格納するためJsonCPP
、以下にコードを追加する必要があります。
Value &Value::resolveReference(const char *key, bool isStatic)
まず、解析していることを確認する必要があります (そして、一部の Json::Value にアクセスしていません)。次に、これに何か (例外やフラグなど) を追加する必要がありますif
。
if (it != value_.map_->end() && (*it).first == actualKey)
{
// key is already present: if parsing, throw!
return (*it).second;
}
問題を開きます。それは簡単に追加できます。(Sga のアイデアが最善の方法かもしれません。) 私たちは最近、バイナリ互換性を維持しながら機能を追加しやすくするために多くの作業を行いました。