//搜索json中指定的key的value,这是原创,哈哈
- //搜索json得到指定key的值,只支持stringvalue
- //如果strcontent不为空,使用strcontent解析,如果为空直接使用v
- stringGetJsonStringValue(stringstrContent,string&strKey,Json::Valuev)
- if(!strContent.empty())
- Json::Readerreader;
- if(!reader.parse(strContent,v))
- returnstring("");
- Json::Value::Membersmem=v.getMemberNames();
- Json::Value::Members::iteratorit;
- //遍历所有key广度搜索
- for(it=mem.begin();it!=mem.end();it++)
- if(*it==strKey)
- if(v[*it].type()==Json::stringValue)
- returnv[*it].asString();
- returnstring("");
- //如果未找到,再深度搜索
- for(it=mem.begin();it!=mem.end();it++)
- Json::ValueTypetype=v[*it].type();
- if(type==Json::objectValue)
- stringstrvalue=GetJsonStringValue(string(""),strKey,v[*it]);
- if(!strvalue.empty())
- returnstrvalue;
- if(type==Json::arrayValue)
- for(inti=0;i<v[*it].size();i++)
- //如果在递归的过程中已找到,则返回
- stringstrvalue=GetJsonStringValue(string(""),v[*it][i]);
- if(!strvalue.empty())
- returnstrvalue;
- }