Jsoncpp是目前比较好用的开源Json解析库,现在总结一下它的使用方法,理解,以供以后查阅。

在引入Jsoncpp的时候我们看到Jsoncpp里边的常用的cpp文件,有json_reader.cpp,json_value.cpp,json_writer.cpp,

其中:

json_value.cpp用来定义jsoncpp可以使用的类型,大概有

json_reader.cpp 主要用于将json串解析到json_value

json_writer.cpp 主要用于将字符串转换为json串

一、使用Jsoncpp解析Json串

Json串

示例:{"strjson":"jsonTest","address":"sea","array":[{"Test1":"Json1"},{"Test2":"Json2"},{"Test3":"Json3"}]};

可以看见,上面的json串包含两种结构的json串,对象类型和数组类型。

解析代码:

<pre name="code" class="cpp">#include <iostream>
#include <string>
#include"json/json.h"
int main()
{ std::string strJson = "{ \"strjson\":\"jsonTest\", \"address\" : \"sea\", \"array\" : [{\"Test1\":\"Json1\"}, {\"Test2\":\"Json2\" }, { \"Test3\":\"Json3\" }] }";Json::Reader reader;Json::Value valueType1;//将strJson放至value区进行处理if (reader.parse(strJson, valueType1)){//第一种结构,对象类型,可以直接按键值获得关键值std::string out = valueType1["strjson"].asString();std::cout << out << std::endl;//第二种结构被还包含在第一种结构中,由第一种结构获取//第二种结构只能按照迭代器来获取Json::Value valueType2 = valueType1["array"];for (int i = 0; i < valueType2.size(); i++){std::cout << valueType2[i]["Test3"].asString()<<std::endl;std::cout << valueType2[i]["Test2"].asString() << std::endl;}}getchar();return 0;}

二、使用Jsoncpp生成Json串

代码示例:

<pre name="code" class="cpp">{Json::Value root;Json::Value arrayObj;Json::Value item;//创建一个对象item["Test1"] = "Json1";item["Test2"] = "Json2";item["Test3"] = "Json3";root["strJson"] = "jsonTest";root["address"] = "sea";arrayObj.append(item);//item对象被作为值放入arrayObj中root["array"] = arrayObj;//将json转换为字符串root.toStyledString();std::cout << root << std::endl;getchar();return 0;}

运行结果如下:

转载于:https://www.cnblogs.com/citron/p/6135604.html

Jsoncpp 使用方法解析相关推荐

  1. Jsoncpp 使用方法大全

    Jsoncpp 使用方法大全 来源 http://blog.csdn.net/yc461515457/article/details/52749575 Json(JavaScript Object N ...

  2. Peer J:整合高通量绝对丰度定量方法解析土壤细菌群落及动态

    本文转自"上海天昊生物",已获授权 英文题目: Assessing soil bacterial community and dynamics by integrated high ...

  3. leaq c 汇编语言,汇编语言lea指令使用方法解析

    这篇文章主要介绍了汇编语言lea指令使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 lea指令变种(按大小分类): leaw #2个字节 ...

  4. python类中方法的执行顺序-浅谈Python的方法解析顺序(MRO)

    方法解析顺序, Method Resolution Order 从一段代码开始 考虑下面的情况: class A(object): def foo(self): print('A.foo()') cl ...

  5. 【Android NDK 开发】JNI 方法解析 ( 字符串数组参数传递 | 字符串遍历 | 类型强转 | Java 字符串与 C 字符串转换 | 字符串释放 )

    文章目录 I . C/C++ 中的 Java 字符串数组类型 II . 获取字符串数组长度 III . 获取字符串数组元素 IV . 类型强转 ( jobject -> jstring ) V ...

  6. 【Android NDK 开发】JNI 方法解析 ( JNIEnv *env 参数 )

    文章目录 一. JNI 方法解析 二. JNIEnv *env 参数解析 三. C 语言 环境中 JNIEnv *env 参数解析 四. C ++ 环境中 JNIEnv *env 参数解析 总结 : ...

  7. 【Android 多媒体开发】 MediaPlayer 状态机 接口 方法 解析

    作者 : 韩曙亮 转载请著名出处 :  http://blog.csdn.net/shulianghan/article/details/38487967 一. MediaPlayer 状态机 介绍 ...

  8. python不定长参数怎么相加_python函数不定长参数使用方法解析

    这篇文章主要介绍了python函数不定长参数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 pathon中的函数可以使用不定长参数,可以 ...

  9. java修改文件的大小限制_Struts2修改上传文件大小限制方法解析

    首先struts上传最大大小由两个地方决定. struts.multipart.maxSize决定整个post的form最大是多大,所以这个限制是最初的.默认大小是接近2M,在struts的defau ...

最新文章

  1. 实战:使用Mask-RCNN的停车位检测
  2. 工作中使用计算机的经验,事业单位考试中计算机工作经历是什么意思
  3. Android 获取SDCard中某个目录下图片
  4. Java反射学习(java reflect)(三)
  5. PortSentry
  6. Dataset:Big Mart Sales数据集的简介、下载、案例应用之详细攻略
  7. ASP.Net全局变量的设置和读取方法
  8. Asp.Net Mvc - 在OnResultExecut* 拦截Action返回的HTML
  9. JSF2.0与纯JS框架
  10. 解决waitfor()阻塞问题
  11. python爬取知乎live_Python爬虫 - 简单抓取百度指数
  12. python缺少标准库_Python 实现自动导入缺失的库
  13. Windows 2000缓冲区溢出入门
  14. 达拉草201771010105《面向对象程序设计(java)》第十七周学习总结
  15. 拿什么奉献给你,我的敏感信息(转)
  16. Eclipse Ctrl+Alt+↓ 失效问题解决
  17. 基于激光雷达点云数据的目标检测
  18. 我的世界高亮显示服务器,waila(我的世界高亮显示没了)
  19. 程序员也要学英语——名词和代词
  20. 37页pdf,埃默里大学最新「大数据时代事件预测」综述,ACM顶级期刊上发表

热门文章

  1. Nagios插件NDOUtils安装
  2. EOSIO Dawn 4.0 发布
  3. material-ui_满足Material-UI —您最喜欢的新用户界面库
  4. 逻辑回归:确定一个人是否年收入超过5万美元
  5. java集合总结_Java中集合总结
  6. 零基础学习java,这些书一定要看!
  7. Ubuntu下搭建postgresql主从服务器(方法1)
  8. snort源码的详细分析
  9. 怎么安装MYSQL5.0的JDBC驱动
  10. 如何让ie 7 支持box-shadow