HasMember期间的Rapidjson断言
Rapidjson assertions during HasMember
对于所有熟悉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",它应该运行良好)时,它总是执行错误的部分(其他部分),即使我切换回第一个日期,它仍然执行其他部分。(同时弹出许多断言(主要是isString()))
那么HasMember真的是这里的问题吗,从某种意义上说,它可能正在改变对象
除此之外,还有其他搜索成员的方法吗
任何小费都将不胜感激。。。
如果没有实际的代码,很难判断,但我认为问题可能是您将"v"视为Value而不是Object。"v"不是一个值,它是对象的名称。所以你有一个嵌套的对象。为了做到这一点,我认为您必须使用MemberIterator并迭代v对象中的子对象。
rapidjson有一个关于如何使用迭代器的很好的例子。
这里还有一个问题,它很好地回答了如何使用嵌套对象
使用rapidjson 检索JSON字符串中的嵌套对象
相关文章:
- 尝试使用 std::vector<std::thread时出现静态断言失败错误>
- uint_not_usable_without_attribute在业力规则中使用数字生成器时静态断言失败
- C++ 使用增强正则表达式库时断言崩溃
- 通过构造函数创建一些值并尝试添加到文档中使用 rapidjson 不起作用
- 从 exe 文件 (Visual Studio ) 启动时调试断言失败
- 如何将向量断言到特征矩阵
- C++ 尝试在不存在的构造函数中引用已删除的函数(使用 rapidJson)
- OpenCV - Python 断言错误:SAD 算法 - 立体相机视差图计算
- 使用 Google Test 对自定义断言函数进行单元测试
- 断言"id < 0"在Qt ActiveX中失败
- 初始值设定项列表构造和静态断言
- 在 CppUnit 中测试中止断言失败
- 使用扫描的调试断言失败
- MS 本机单元测试 - 断言::线程失败不起作用
- 如何断言 CRTP 的函数为最终函数?
- 迭代器跳闸视觉C++ 2017 断言
- 断言 'fp_ != 0' 失败 (RapidJSON)
- 断言 'IsArray()' 失败 (RapidJSON)
- 断言 for rapidJson 失败了
- HasMember期间的Rapidjson断言