首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HasMember期间的Rapidjson断言

问HasMember期间的Rapidjson断言
EN

Stack Overflow用户
提问于 2014-10-02 17:14:44
回答 1查看 2.8K关注 0票数 0

对于所有熟悉rapidjson的人,我有以下问题:

我有一个函数,它接受日期作为参数,如果这个日期存在于json文件中,则该方法执行一些操作,如果没有其他操作,则执行一些操作。

一般来说,它看起来是这样的:(不是真正的代码,更像是伪代码)

函数:

代码语言:javascript
复制
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文件:

代码语言:javascript
复制
{
    "main": {
        "v": {
           "2014-10-02" : {
                //some fields
           },
           "2014-10-03" : {
                //some fields
           }
         }
     }    
}

因此,我第一次调用日期为"2014-10-02“的updateData时,它正确运行(执行if部分)。

问题是,当我为另一个日期调用updateData (比如"2014-10-03“,它应该运行良好),它总是执行错误的部分(其他部分),即使我切换回第一个日期,它仍然执行其他部分。(同时弹出许多断言(主要是isString()。

那么,HasMember真的是这里的问题吗,从某种意义上说,它可能正在改变对象?

除了这一点之外,还有什么其他的方法来寻找成员吗?

任何小费都很感激..。

EN

回答 1

Stack Overflow用户

发布于 2014-10-02 21:06:20

如果没有实际的代码,很难判断,但我认为问题可能是,您将"v“作为值而不是对象。"v“不是一个值,它是对象的名称。所以你拥有的是一个嵌套的对象。为了做到这一点,我认为您必须使用MemberIterators并遍历v对象中的子对象。

rapidjson有一个关于如何使用迭代器的很好的例子。

这里还有一个问题,它对如何使用嵌套对象有一个很好的答案。

Retrieving a nested object inside a JSON string using rapidjson

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26166013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档