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一样也是一 ...
随机推荐
- object转字符串
1.obj.tostring() obj为空时,抛异常. 2.convert.tostring(obj) obj为空时,返回null: 3.(string)obj obj为空时,返回null:obj不 ...
- Python进程-实现
multiprocessing模块介绍 python中的多线程无法利用CPU资源,在python中大部分计算密集型任务使用多进程.如果想要充分地使用多核CPU的资源(os.cpu_count()查看) ...
- php 制作圆形图片
function createRoundImg($imgpath) { $ext = pathinfo($imgpath); $src_img = null; switch ($ext['extens ...
- 用vue开发一个app(4,一个久等了的文章)H5直播平台登录注册(1)
我上一篇关于vue的文章和这一篇时间隔了有点久了.最近终于写完了. 因为我一直想写个有点实绩的东西,而不是随便写一个教程一样东西.结合最近在项目中学到的经验和我的一点创意. 首先介绍下这是个什么! H ...
- Linux系统命令归纳
常规操作命令: # netstat -atunpl |egrep "mysql|nginx"# vimdiff php.ini*# runlevel# rpm -e httpd - ...
- 通过Beego将之前实现的短url项目实现
正好通过这个小例子对之前了解的beego框架的基本内容进行一个简单的应用 实现的完整代码地址:https://github.com/pythonsite/go_simple_code/tree/mas ...
- 关于Maven的配置与学习
1. 简介 官方说法:Apache Maven is a software project management and comprehension tool. Based on the concep ...
- 【BootStrap】 布局组件 II
BootStrap 布局组件 II ■ 分页 BS中通过.pagination的ul元素来实现一个分页集合,一个典型的分页如下: <ul class="pagination" ...
- 【Python】 list & dict & str
list & dict & str 这三种类型是python中最常用的几种数据类型.他们都是序列的一种 ■ 序列通用操作 1. 分片 s[a:b] 返回序列s中从s[a]到s[b- ...
- python web开发-flask连接sqlite数据库
在之前的文章中我们介绍了如何在centOS中安装sqlite数据库. Sqlite安装完成后,本节就用flask来连接和操作sqlite数据库. 1. 数据准备 先在sqlite3中创建一 ...