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一样也是一 ...
随机推荐
- eclipse的常用快捷键和一些基本设置!!!
对于一些比较繁琐简单的代码没必要天天敲,为了提高效率,还是需要使用一些快捷键的:下面就说了一些比较基本的. alt+shift+s+c 无参构造器 alt+shift+s+O 有参构造器 ...
- mysql安装过程
1.到官网下载Mysql,目前最新版都是5.0以上版本,下载之后直接解压即可 2.在终端进入bin目录(如果嫌麻烦可配置环境变量,配置之后则无需进入bin目录则可敲命令),安装数据库服务:my ...
- 解决python本地离线安装requests问题
使用python36进行本地requests安装的时候,由于安装requests需要联网,导致安装失败,现象如下: 一开始以为,需要安装什么证书,其实只是需要一个python的证书库,(⊙﹏⊙)b 执 ...
- IE常见的兼容处理
IE常见的兼容处理 1. 禁用IE兼容模式 为了保证IE能够使用最新渲染模式而不是兼容模式,在html文档头部应加入以下代码: <head> <meta charset=" ...
- rocketMq概念介绍
rocketMq官网 http://rocketmq.apache.org/ rocketMq逻辑概念介绍 rocketMq逻辑图 备注: 改图片分享自李占卫的网上家园 说明: 在rocketM ...
- 笔记:Struts2 国际化
视图页面的国际化 在JSP页面中指定国际化资源需要借助<s:i18n-/>标签,如果把<s:i18n-/>标签作为<s:test-/>标签的父标签,则会直接加载父标 ...
- 配置Hibernate的二级缓存
1.在applicationContex.xml文件里面添加二级缓存配置: <!-- 配置hibernate的sessionFactory --> <bean id="se ...
- 基于以太坊开发的类似58同城的DApp开发与应用案例
今天,Origin开发团队很高兴地宣布在以太坊Rinkeby测试网络上推出Origin Protocol Demo DApp ! 在这个DApp中,你可以在不同垂直行业的solidarity econ ...
- 使用ADO.NET查询和操作数据库
String和StringBuilder 语法: //声明一个空的StringBuilder对象 StingBuilder对象名称 = new StringBuilder(); //声明一个Str ...
- Oracle profile 使用技巧
给scott用户分配一个profile要求如下: 1.尝试登录的次数最多4次: 2.如果4次输入错误,则锁定该用户2天: 3.密码每隔5天修改一次,宽限期为2天: 答: SQL>conn sys ...