Jsoncpp未知Json获取所有Key和Value

场景:要获取某个Json数据,但不知道Json数据的key。如:{"item_key1":"item_value1","item_key2":"item_value2","item_key3":"item_value3"}
解决:关键是如何获取到key,有了key,就可以获取到value了。可用通过getMemberNames函数获取key,之后通过key获取value

string strJson = "{"item_key1":"item_value1","item_key2":"item_value2","item_key3":"item_value3"}";
Json::Value valRoot;  
Json::Reader reader;  

        if (!reader.parse(strJson, valRoot))  
        {  
            return JSON_PARSE_ERR;  
        }  

        Json::Value::Members members;  
        members = valRoot.getMemberNames();   // 获取所有key的值
        for (Json::Value::Members::iterator iterMember = members.begin(); iterMember != members.end(); iterMember++)   // 遍历每个key
        {  
            std::string strKey = *iterMember;  
            if (valRoot[strKey.c_str()].isString())  
            {  
                std::string strVal = valRoot[strKey.c_str()].asString();  
                std::cout<<strKey.c_str()<<":"<<strVal.c_str()<<std::endl;  
            }  
            else if (valRoot[strKey.c_str()].isInt())  
            {  
                int iVal = valRoot[strKey.c_str()].asInt();  
                std::cout<<strKey.c_str()<<":"<<iVal<<std::endl;  
            }  
            else if (valRoot[strKey.c_str()].isDouble())  
            {  
                double dVal = valRoot[strKey.c_str()].asDouble();  
                std::cout<<strKey.c_str()<<":"<<dVal<<std::endl;  
            }  
            else  
            {  
                std::string strVal = valRoot[strKey.c_str()].toStyledString();  
                std::cout<<strKey.c_str()<<":"<<strVal.c_str()<<std::endl;  
            }  
        }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值