對於所有熟悉rapidjson的人,我有以下問題:
我有一個接受參數作爲日期的特定函數,如果該日期存在於json文件中,該方法執行一些操作,並且if不是其他一些操作。
一般來說它看起來像這樣:(而不是實際的代碼更像僞)HasMember期間的Rapidjson斷言
功能:
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真的是這裏的問題,從某種意義上說它可能會改變對象?
除此之外,還有其他方法可以搜索成員嗎?
任何提示是讚賞...
所以基本上與對象的成員進行互動的唯一方法是使用迭代器一個很好的答案嗎? – TheDillo 2014-10-02 21:28:12
對於嵌套對象,這只是我得到它的工作方式,雖然在我的情況下,它也恰好是最有意義的方式。 – 2014-10-02 23:25:18