Rapidjson に精通しているすべての人に、次の問題があり
ます。日付をパラメーターとして受け入れる特定の関数があり、その日付が json ファイルに存在する場合、メソッドはいくつかの操作を実行し、そうでない場合は他の操作を実行します。
一般的には次のようになります: (疑似のような実際のコードではありません)
関数:
void updateData(string date) {
//
//code to turn date from string to const char* (tested)
//
if (v.HasMember(date)) { //v is a value
Value d;
d=v[date];
//
//code that involves getting data from d (d is object) using HasMember
//
} else {
//generic code that has nothing to do with json
}
JSON ファイル:
{
"main": {
"v": {
"2014-10-02" : {
//some fields
},
"2014-10-03" : {
//some fields
}
}
}
}
したがって、日付「2014-10-02」のupdateDataを初めて呼び出すと、正しく実行されます(if部分を実行します)。
問題は、別の日付の updateData を呼び出すと (「2014-10-03」など、うまく機能するはずです)、常に間違った部分 (else 部分) が実行され、最初の日付に戻っても実行されます。他の部分。(多くのアサーションをポップしながら (ほとんど isString()))。
オブジェクトを変更している可能性があるという意味で、HasMember は本当に問題なのでしょうか?
それ以外に、メンバーを検索する別の方法はありますか?
どんなヒントでも大歓迎です...