前端之家收集整理的这篇文章主要介绍了
JsonCpp遍历json,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
- #include"json.h"
- typedefJson::WriterJsonWriter;
- typedefJson::ReaderJsonReader;
- typedefJson::ValueJsonValue;
- voidprint(JsonValuev)
- {
- JsonValue::Membersmem=v.getMemberNames();
- for(autoiter=mem.begin();iter!=mem.end();iter++)
- {
- cout<<*iter<<"\t:";
- if(v[*iter].type()==Json::objectValue)
- cout<<endl;
- print(v[*iter]);
- }
- elseif(v[*iter].type()==Json::arrayValue)
@H_404_92@ cout<<endl;
- autocnt=v[*iter].size();
- for(autoi=0;i<cnt;i++)
@H_404_92@ print(v[*iter][i]);
@H_404_92@ }
- if(v[*iter].type()==Json::stringValue)
- cout<<v[*iter].asString()<<endl;
- if(v[*iter].type()==Json::realValue)
- cout<<v[*iter].asDouble()<<endl;
- if(v[*iter].type()==Json::uintValue)
- cout<<v[*iter].asUInt()<<endl;
- else
- cout<<v[*iter].asInt()<<endl;
- return;
- }
@H_
502_166@ //
搜索json中指定的key的value,这是原创,哈哈
@H_
502_166@
-
- 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++)
@H_404_92@ 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;
- }