场景:要获取某个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;
}
}
原文地址:https://www.jb51.cc/json/288758.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。