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库使用的更多相关文章

  1. ubuntu 下使用 jsoncpp库

    做项目的时候需要用c++解析json文件, 之前使用的是libjson 库, 但当g++ 开启 -std=c++11 选项时, 该库的很多功能不能用, 而且还有一些其他的问题, 不推荐使用. 后来采用 ...

  2. (1)jsoncpp库的使用

        本节主要介绍 json是什么以及jsoncpp库的使用. (1)JSON是什么 json 是一种轻量级的文本数据交换格式: json 独立于语言.平台,使用java script语法来描述对象 ...

  3. C++处理Json串——jsoncpp库

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,和xml类似,本文主要对VS2008中使用Jsoncpp解析json的方法做一下记录.Jsoncpp是个跨 ...

  4. 编译jsoncpp库以及要注意的问题

    原创文章,转载请注明原作者与本文原始URL. 版本:jsoncpp-src-0.5.0.zip简介:jsoncpp是用cpp实现的json库,可以拼装,解析,生成json串.我们要把他编译成动态库.这 ...

  5. Windows10 VS2017 C++ Json解析(使用jsoncpp库)

    1.项目必须是win32 2.生成的lib_json.lib放到工程目录下 3.incldue的头文件放到工程目录,然后设置工程->属性->配置属性->vc++目录->包含目录 ...

  6. linux::jsoncpp库

    下载库:http://sourceforge.net/projects/jsoncpp/files/ tar -zxvf jsoncpp-src- -C jsoncpp () 安装 scons $ s ...

  7. VS 2010 编译安装 boost 库 -(和 jsoncpp 库共存)

    boost库的简单应用很容易,网上有很多资料,但是,如果要json 和 boost 一起使用就会出现这样那样的问题, 有时候提示找不到 “libboost_coroutine-vc100-mt-sgd ...

  8. C++的Json解析库:jsoncpp和boost

    C++的Json解析库:jsoncpp和boost - hzyong_c的专栏 - 博客频道 - CSDN.NET C++的Json解析库:jsoncpp和boost 分类: 网络编程 开源库 201 ...

  9. C++的Json解析库:jsoncpp和boost(转)

    原文转自 http://blog.csdn.net/hzyong_c/article/details/7163589 JSON(JavaScript Object Notation)跟xml一样也是一 ...

随机推荐

  1. 题目1032:ZOJ

    题目描述: 读入一个字符串,字符串中包含ZOJ三个字符,个数不一定相等,按ZOJ的顺序输出,当某个字符用完时,剩下的仍然按照ZOJ的顺序输出. 输入: 题目包含多组用例,每组用例占一行,包含ZOJ三个 ...

  2. 简单几步优化你的windows,加快开机速度(重装windows之后要做的几件事)

    每个人都想要让自己的系统运行得快一些,开机快一些,我就来说说我自己的经验,我使用的系统是windows8.1,当然这有些方法也适用于其他的系统,我每次重装完系统之后第一件事就是下面几步,当然重装系统之 ...

  3. postgresql数据操作

    windows下操作postgresql 删除数据库:dropdb.exe -U postgres 数据库名称 创建数据库createdb.exe -U postgres lilei_db1--lil ...

  4. linq使用字符串参数排序

    今天找了半天资料,有两种种方法: 1.把字符串参数变为lambda表达式 2.使用System.Linq.dynamic引用 这里我讲第二种方法 第一步:nuget搜索关键字"dynamic ...

  5. 微软Skype Linux客户端全新发布

    前两天,微软说要给“Linux 用户带来一个令人兴奋的新闻”,今天,这个新闻来了.它刚刚为 Linux 发布了一个新的 Skype 客户端. 此次发布,微软为 Linux 带来的 Skype 客户端与 ...

  6. Python进阶_类与实例

    上一节将到面对对象必须先抽象模型,之后直接利用模型.这一节我们来具体理解一下这句话的意思. 面对对象最重要的概念就是类(class)和实例(instance),必须牢记类是抽象的模板,比如studen ...

  7. Linux档案权限与目录配置

    一.档案权限: Linux 最优秀的地方之一,就在于他的多人多任务环境.而为了让各个使用者具有较保密的档案数据,因此档案的权限管理就变的很重要了. Linux 一般将档案可存取的身份分为三个类别,分别 ...

  8. Ubuntu 14.04下Hadoop2.4.1集群安装配置教程

    一.环境 系统: Ubuntu 14.04 64bit Hadoop版本: hadoop 2.4.1 (stable) JDK版本: OpenJDK 7 台作为Master,另3台作为Slave. 所 ...

  9. Spring Cloud简介以及版本选择

    什么是SpringCloud 官方的说法就是spring Cloud 给开发者提供一套按照一定套路快速开发 分布式系统 的工具. 具体点就是Spring boot实现的微服务架构开发工具.它为微服务架 ...

  10. Algorithm --> 求N以内的真分数个数

    求N以内的真分数个数 For example, if N = 5, the number of possible irreducible fractions are 11 as below. 0 1/ ...