JsonCPP库使用
1.使用环境DevC++
a.建立C++工程,并添加.\JsonCPP\jsoncpp-master\jsoncpp-master\src\lib_json中源文件到工程中。
b.添加头文件路径
2.使用实例
a.主函数
#include <iostream>
#include <json/json.h>
using namespace std; /* run this program using the console pauser or add your own getch, system("pause") or input loop */
void readJson(string strValue);
string writeJson(); int main(int argc, char** argv) { cout<<"-------------Construct Json!-------------"<<endl;
std::string json = writeJson(); cout<<"-------------Resolve Json!--------------"<<endl;
readJson(json); return ;
}
b.构造json
//构造json格式内容
std::string writeJson() {
using namespace std; //Value类似一个容器,可以添加多个键值对的元素
Json::Value root;
Json::Value arrayObj;
Json::Value item1;
Json::Value item2;
Json::Value item3; item1["cpp"] = "jsoncpp";
arrayObj.append(item1);//添加一对大括号
item2["java"] = "jsoninjava";
arrayObj.append(item2);
item3["php"] = "support";
arrayObj.append(item3); root["name"] = "json";
root["type"] = ;
root["bool"] = ;
root["array"] = arrayObj;//添加一对中括号 //root.toStyledString();//Json格式存储之后,转化为Json格式字符串
std::string out = root.toStyledString();
std::cout << out << std::endl;
return out;
}
c.解析Json
//解析Json格式内容
void readJson(string strValue) {
using namespace std;
//std::string strValue = "{\"name\":\"json\",\"type\":3,\"bool\":true,\
// \"array\":[{\"cpp\":\"jsoncpp\"},{\"java\":\"jsoninjava\"},{\"php\":\"support\"}]}"; Json::Reader reader;
Json::Value value; //自动解析strValue中Json内容,并存储到Value中
if (reader.parse(strValue, value))
{
//字符串类型的成员
std::string out = value["name"].asString();//get value of the key --nm
std::cout <<"name:"<< out << std::endl;
//整形类型成员
int num = value["type"].asInt();//get value of the key --nm
std::cout <<"type:"<< num << std::endl; bool bl = value["bool"].asBool();//get value of the key --nm
std::cout <<"bool:"<< bl << std::endl;//bool值输出是0或者1 /* Error --nm
std::string ar = value["array"].asString();//get value of the key --nm
std::cout << ar << std::endl;
*/
//数组类型的成员
const Json::Value arrayObj = value["array"];
for(unsigned j = ;j < arrayObj.size(); j++){
//判断是否含有该键
if (arrayObj[j].isMember("cpp")){
//取出给定键对应的值
out = arrayObj[j]["cpp"].asString();
std::cout <<"cpp:"<< out << std::endl;
}else if (arrayObj[j].isMember("java")){
out = arrayObj[j]["java"].asString();
std::cout <<"java:"<< out << std::endl;
}else if (arrayObj[j].isMember("php")){
out = arrayObj[j]["php"].asString();
std::cout <<"php:"<< out << std::endl;
}
}
}
}
d结果
JsonCPP库使用的更多相关文章
- ubuntu 下使用 jsoncpp库
做项目的时候需要用c++解析json文件, 之前使用的是libjson 库, 但当g++ 开启 -std=c++11 选项时, 该库的很多功能不能用, 而且还有一些其他的问题, 不推荐使用. 后来采用 ...
- (1)jsoncpp库的使用
本节主要介绍 json是什么以及jsoncpp库的使用. (1)JSON是什么 json 是一种轻量级的文本数据交换格式: json 独立于语言.平台,使用java script语法来描述对象 ...
- C++处理Json串——jsoncpp库
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,和xml类似,本文主要对VS2008中使用Jsoncpp解析json的方法做一下记录.Jsoncpp是个跨 ...
- 编译jsoncpp库以及要注意的问题
原创文章,转载请注明原作者与本文原始URL. 版本:jsoncpp-src-0.5.0.zip简介:jsoncpp是用cpp实现的json库,可以拼装,解析,生成json串.我们要把他编译成动态库.这 ...
- Windows10 VS2017 C++ Json解析(使用jsoncpp库)
1.项目必须是win32 2.生成的lib_json.lib放到工程目录下 3.incldue的头文件放到工程目录,然后设置工程->属性->配置属性->vc++目录->包含目录 ...
- linux::jsoncpp库
下载库:http://sourceforge.net/projects/jsoncpp/files/ tar -zxvf jsoncpp-src- -C jsoncpp () 安装 scons $ s ...
- VS 2010 编译安装 boost 库 -(和 jsoncpp 库共存)
boost库的简单应用很容易,网上有很多资料,但是,如果要json 和 boost 一起使用就会出现这样那样的问题, 有时候提示找不到 “libboost_coroutine-vc100-mt-sgd ...
- C++的Json解析库:jsoncpp和boost
C++的Json解析库:jsoncpp和boost - hzyong_c的专栏 - 博客频道 - CSDN.NET C++的Json解析库:jsoncpp和boost 分类: 网络编程 开源库 201 ...
- C++的Json解析库:jsoncpp和boost(转)
原文转自 http://blog.csdn.net/hzyong_c/article/details/7163589 JSON(JavaScript Object Notation)跟xml一样也是一 ...
随机推荐
- Pandas与Matplotlib基础
pandas是Python中开源的,高性能的用于数据分析的库.其中包含了很多可用的数据结构及功能,各种结构支持相互转换,并且支持读取.保存数据.结合matplotlib库,可以将数据已图表的形式可视化 ...
- c# 根据唯一码,存缓存 实现12小时内 阅读量+1
需求:某一个详细页面需要实现用户 12小时内阅读量+1, 实现思路;得到一个唯一码的机器码,不管是否用户登录了 都有这个码,然后存到缓存里面 最后判断时间+12小时 是否超过当前时间 string ...
- 笔记:MyBatis XML配置-typeHandlers 默认类型处理器
类型处理器 Java 类型 JDBC 类型 BooleanTypeHandler java.lang.Boolean, boolean 数据库兼容的 BOOLEAN ByteTypeHandler j ...
- 常用数据库连接池 (DBCP、c3p0、Druid) 配置说明
1. 引言 1.1 定义 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标.数据库 ...
- Docker 网络管理及容器跨主机通信
1.网络模式 docker支持四种网络模式,使用--net选项指定: host,--net=host,如果指定此模式,容器将不会获得一个独立的network namespace,而是和宿主机共用一个. ...
- Matlab绘图基础——axis设置坐标轴取值范围
peaks; axis tight %Set the axis limits to equal the range of the data axis square axis 'auto x' % ...
- 一、Python安装与Pycharm使用入门
一.安装Python 1.Linux下安装 一般系统默认已安装2.6.6版本,升级成2.7版本, 但 2.6 不能删除,因为系统对它有依赖,epel源里最新的也是2.6版本,所以以源代码的方式安装2. ...
- 浅谈RMQ
RMQ是一类求区间极值的问题 有一种 \(O\left(nlogn\right)\) 的解法,用倍增实现 倍增算法 变量的定义 \(A_i\) : 原数组 \(f_{i,j}\) : 以 \(i\) ...
- linux小白成长之路10————SpringBoot项目部署进阶
[内容指引] war包部署: jar包部署: 基于Docker云部署. 一.war包部署 通过"云开发"平台初始化的SpringBoot项目默认采用jar形式打包,这也是我们推荐的 ...
- 20155215 第二周测试1 与 myod
课堂测试 第一题 每个.c一个文件,每个 .h一个文件,文件名中最好有自己的学号 用Vi输入图中代码,并用gcc编译通过 在Vi中使用K查找printf的帮助文档 提交vi编辑过程截图,要全屏,包含自 ...