rapidjson总结-------解析json文件

JSON格式的数据报文:

{
"VisitorsInfo": [
{
"IdentityCardNum":"665321199503015478",
"VisitorName": "张三",
"Sex":"男",
"CarNum":"浙A112",
"Destination":"2号楼",
"CurrentTime":"2017-05-27 19:50:02",
"InvalidTime":"2017-05-27 23:59:59"
},
{
"IdentityCardNum":"665321199503015478",
"VisitorName": "张三",
"Sex":"男",
"CarNum":"浙A112",
"Destination":"2号楼",
"CurrentTime":"2017-05-27 19:50:02",
"InvalidTime":"2017-05-27 23:59:59"
}
]
}

代码实现对上述json格式的数据进行转换,读取其中的值

 

解析代码:

bool CommonTools::JsonToVisitorInfo(char* szResponse,std::vector<VisitorInfo> &visitorList)
{
    Document document;
    bool ret = true;
    do 
    {
        if (document.Parse(szResponse).HasParseError())
        {
            DISPLAYMAIN_ERROR("VisitorUpdateCallBack Gets wrong json, Parse Fails");
            ret= false;
            break;
        }
        if (!document.HasMember("VisitorsInfo"))
        {
            DISPLAYMAIN_ERROR("visitorinfo Should Have Member VisitorInfo");
            ret = false;
            break;
        }
        Value& vVisitorInfoNode = document["VisitorsInfo"];
        if (!vVisitorInfoNode.IsArray())
        {
            DISPLAYMAIN_ERROR("vVisitorInfoNode Shoulud Be an Array");
            ret = false;
            break;
        }


        std::string sID;
        std::string sSex;
        std::string sName;
        std::string sCarName;
        std::string sArriveTime;
        std::string sValidTime;
        std::string sDestination;
        std::string sCardNum;//卡号
        for (SizeType i=0; i!=vVisitorInfoNode.Size(); i++)
        {   
            Value& VNode = vVisitorInfoNode[i];
            if ((!VNode.HasMember("IdentityCardNum")) || (!VNode["IdentityCardNum"].IsString()))
            {
                DISPLAYMAIN_ERROR("vVisitorInfoNode Should Have Member and Type Be String");
                ret = false;
                break;
            }
            sID = VNode["IdentityCardNum"].GetString();
            if ((!VNode.HasMember("Sex")) || (!VNode["Sex"].IsString()))
            {
                ret = false;
                break;
            }
            Value& sexNode = VNode["Sex"];
            sSex = sexNode.GetString();
            if ((!VNode.HasMember("VisitorName")) || (!VNode["VisitorName"].IsString()))
            {
                DISPLAYMAIN_ERROR("vVisitorInfoNode Should Have Member VisitorName and Type Be String");
                ret = false;
                break;
            }
            sName = VNode["VisitorName"].GetString();
            if ((!VNode.HasMember("CarNum")) || (!VNode["CarNum"].IsString()))
            {
                DISPLAYMAIN_ERROR("vVisitorInfoNode Should Have Member CarNum and Type Be String");
                ret = false;
                break;
            }
            sCarName = VNode["CarNum"].GetString();
            if ((!VNode.HasMember("CurrentTime")) || (!VNode["CurrentTime"].IsString()))
            {
                DISPLAYMAIN_ERROR("vVisitorInfoNode Should Have Member CurrentTime and Type Be String");
                ret = false;
                break;;
            }
            sArriveTime = VNode["CurrentTime"].GetString();
            if ((!VNode.HasMember("InvalidTime")) || (!VNode["InvalidTime"].IsString()))
            {
                DISPLAYMAIN_ERROR("vVisitorInfoNode Should Have Member InvalidTime and Type Be String");
                ret = false;
                break;
            }
            sValidTime = VNode["InvalidTime"].GetString();
            if ((!VNode.HasMember("Destination")) || (!VNode["Destination"].IsString()))
            {
                DISPLAYMAIN_ERROR("vVisitorInfoNode Should Have Member Destination and Type Be String");
                ret = false;
                break;
            }
            sDestination = VNode["Destination"].GetString();


            if ((!VNode.HasMember("CardNum")) || (!VNode["CardNum"].IsString()))
            {
                DISPLAYMAIN_ERROR("vVisitorInfoNode Should Have Member CardNum and Type Be String");
                ret = false;
                break;
            }
            sCardNum = VNode["CardNum"].GetString();
            VisitorInfo visitor(sName, sDestination, sArriveTime, sValidTime, sCarName,true, sCardNum, sID);
            visitorList.push_back(visitor);
        }
        if (!ret)
        {
            break;
        }
        
    } while (0);


    return ret;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值