#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("");
}

[转]JsonCpp遍历json的更多相关文章

  1. 第三方库 jsoncpp 读写json

    一.摘要 JSON 的全称为:JavaScript Object Notation,顾名思义,JSON 是用于标记 Javascript 对象的,JSON 官方的解释为:JSON 是一种轻量级的数据传 ...

  2. for in 遍历json

    获取对象属性的语法: 1.obj.attr 2.obj["attr"] for in 遍历json的时候, 1.for(attr in json)中的attr获取到的是json中属 ...

  3. js声明json数据,打印json数据,遍历json数据

    1.js声明json数据: 2.打印json数据: 3.遍历json数据 //声明JSON var json = {}; json.a = 1; //第一种赋值方式(仿对象型) json['b'] = ...

  4. jsoncpp操作 json

    jsoncpp操作 json 博客分类: c/c++ object-c 之 iphone   #include <iostream> //#include "json/json. ...

  5. fastJson顺序遍历JSON字段

    fastJson在把json格式的字符串转换成JSONObject的时候,使用的是HashMap,所以排序规则是根据HASH值排序的,如果想要按照字符串顺序遍历JSON属性,需要在转换的时候指定使用L ...

  6. js遍历json数据

    先看看json返回的数据结构: 我需要遍历取出bookreno   与  title  加载到页面容器中去 首先我要取到 recommendedBookList  字典结构数据,然后遍历反射到相应对象 ...

  7. android JSONArray JSONObject 字符串转json数组 遍历json对象

    String json = "{''data'':[{''name'':''Wallace''},{''name'':''Grommit''}]}"; StringBuffer m ...

  8. 对于json对像,怎么遍历json对象的所有key,在使用json对象时,如果无法知道key,怎么通过key变量来获取值

    对于json对像,怎么遍历json对象的所有key,在使用json对象时,如果无法知道key,怎么通过key变量来获取值?请参阅下面的关键代码: <html> <head> & ...

  9. for-in遍历json数据

    1.for遍历json数据 ','fun':'前端开发'} for(var attr in json){ alert(json[attr]) //遍历json属性的数据 alert(json['nam ...

随机推荐

  1. springboot异常处理方式

    一.异常处理思路 异常捕获的是unchecked型异常,因为checked异常在代码中年已经处理过,当然是在使用try-catch处理.这里首先使用ExceptionHandler捕获全局异常,这样如 ...

  2. lavavel 定时任务 (command的第二个参数)

    之前好像没有写过,记录一下 $schedule->command()方法 第一个参数不用说,可以传纯字符串或者类::class,不过第二个参数确很少人提到 /** * Add a new Art ...

  3. Beta冲刺第6次

    二.Scrum部分 1. 各成员情况 翟仕佶 学号:201731103226 今日进展 新增图像拼接合并功能 存在问题 无 明日安排 视情况而定 截图 曾中杰 学号:201731062517 今日进展 ...

  4. Vue.js中使用wangEditor富文本编辑器

    1.前端代码 前端HTML <script src="https://cdn.bootcss.com/wangEditor/10.0.13/wangEditor.js"> ...

  5. Caused by: java.lang.IllegalStateException: duplicate key: datasource

    java.lang.IllegalStateException: Failed to load property source from location 'classpath:/applicatio ...

  6. 利用Java反射机制优化简单工厂设计模式

    之前项目有个需求,审批流程的时候要根据配置发送信息:发送短信.发送邮件.当时看到这个就想到要用工厂模式,为什么要用工厂模式呢?用工厂模式进行大型项目的开发,可以很好的进行项目并行开发.就是一个程序员和 ...

  7. hdfs的文件个数 HDFS Quotas Guide

    HDFS Quotas Guide Overview HDFS允许管理员为多个每个目录设置使用的命名空间和空间的配额.命名空间配额和空间配额独立操作,但是这两种类型的配额的管理和实现非常类似. Nam ...

  8. The Best Open Source Game Engine: In Search Of Perfection

    https://www.greatsoftline.com/the-best-open-source-game-engine-in-search-of-perfection/ The game eng ...

  9. Servlet & spring -网络事务处理单元

    网络事务处理单元 Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层 ...

  10. Tasking

    Put your plan on the tick list, and set the completion time limit, daily repetition, etc. according ...