JsonCpp遍历json
来源:互联网 发布:爱塔传奇 唐大华知乎 编辑:程序博客网 时间:2024/05/16 09:55
转自 : http://blog.csdn.net/yuanxiaobo007/article/details/26229615
- #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 = 0; 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,这是原创,哈哈
-
-
- 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;
-
- 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 = 0; i < v[*it].size(); i++)
- {
-
- string strvalue = GetJsonStringValue(string(""), strKey, v[*it][i]);
- if (!strvalue.empty())
- {
- return strvalue;
- }
- }
- }
- }
-
- return string("");
- }
0 0