[转]JsonCpp遍历json
阅读原文时间:2023年07月10日阅读:2

#include "json.h"
typedef Json::Writer JsonWriter;
typedef Json::Reader JsonReader;
typedef Json::Value JsonValue;
void print(JsonValue v)
{
JsonValue::Members mem = v.getMemberNames();
for (auto iter = mem.begin(); iter != mem.end(); iter++)
{
cout<<*iter<<"\t: ";
if (v[*iter].type() == Json::objectValue)
{
cout<<endl;
print(v[*iter]);
}
else if (v[*iter].type() == Json::arrayValue)
{
cout<<endl;
auto cnt = v[*iter].size();
for (auto i = ; i < cnt; i++)
{
print(v[*iter][i]);
}
}
else if (v[*iter].type() == Json::stringValue)
{
cout<<v[*iter].asString()<<endl;
}
else if (v[*iter].type() == Json::realValue)
{
cout<<v[*iter].asDouble()<<endl;
}
else if (v[*iter].type() == Json::uintValue)
{
cout<<v[*iter].asUInt()<<endl;
}
else
{
cout<<v[*iter].asInt()<<endl;
}
}
return;
}

搜索json中指定的key的value

//搜索json得到指定key的值,只支持stringvalue
//如果strcontent不为空,使用strcontent解析,如果为空直接使用v
string GetJsonStringValue(string strContent, string& strKey, Json::Value v)
{
if (!strContent.empty())
{
Json::Reader reader;
if (!reader.parse(strContent, v))
{
return string("");
}
}

Json::Value::Members mem = v.getMemberNames();  
Json::Value::Members::iterator it;  
//遍历所有key广度搜索  
for (it = mem.begin(); it != mem.end(); it++)  
{  
    if (\*it == strKey)  
    {  
        if (v\[\*it\].type() == Json::stringValue)  
        {  
            return v\[\*it\].asString();  
        }  
        return string("");  
    }  
}

//如果未找到,再深度搜索  
for (it = mem.begin(); it != mem.end(); it++)  
{  
    Json::ValueType type = v\[\*it\].type();  
    if (type == Json::objectValue)  
    {  
        string strvalue = GetJsonStringValue(string(""), strKey, v\[\*it\]);  
        if (!strvalue.empty())  
        {  
            return strvalue;  
        }  
    }  
    else if (type == Json::arrayValue)  
    {  
        for (int i = ; i < v\[\*it\].size(); i++)  
        {  
            //如果在递归的过程中已找到,则返回  
            string strvalue = GetJsonStringValue(string(""), strKey, v\[\*it\]\[i\]);  
            if (!strvalue.empty())  
            {  
                return strvalue;  
            }  
        }  
    }  
}

return string("");  

}

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章