Json---Windows下使用Jsoncpp
上述Json解析使用的是Jsoncpp,要使用Jsoncpp,得做如下几步的配置:
1.
首先从http://sourceforge.net/projects/jsoncpp/下载,压缩包大约105k。
2.
解压之后,进入 jsoncpp-src-0.5.0\makefiles\vs71 打开 jsoncpp.sln
3.
debug编译lib_json 项目,会在 jsoncpp-src-0.5.0\build\vs71\debug\lib_json 下生成 json_vc71_libmtd.lib
release编译lib_json 项目
项目属性->C/C++ ->输出文件->汇编输出 要设置成 无列表 (否则,在自己项目中引用生成的 json_vc71_libmt.lib 编译时会报错)。
会在 jsoncpp-src-0.5.0\build\vs71\release\lib_json 下生成 json_vc71_libmt.lib
4
在自己的项目中,引用 jsoncpp-src-0.5.0\include\json 下的头文件,和相应的 json_vc71_libmt.lib(debug 版) 或 json_vc71_libmt.lib(release 版)。
就可以开始使用了。
Demo:
#include <fstream>
#include "json.h"
using namespace std; int JsonRead()
{
ifstream ifs;
ifs.open("testR.json"); Json::Reader reader;
Json::Value value;
if (!reader.parse(ifs,value,false))
{
return -1;
} if (value.isObject()) //单个json串,格式:{"age":23,"name":"往事随风"}
{
string name = value["name"].asString();
if (value["name"].isString())
{
name = value["name"].asString();
cout << "name:" << name << endl;
} int age = value["age"].asInt();
if (value["age"].isInt())
{
age = value["age"].asInt();
cout << "age:" << age << endl;
} int aaa = value["aaa"].asInt(); //value 没有 "aaa" 这个key的数据时,会给 aaa 赋初值 0
}
else if (value.isArray()) //json数组,格式:[{"age":23,"name":"往事随风"}]
{
cout << value.size() << endl;
for (int i = 0; i < value.size(); i++)
{
string name = value[i]["name"].asString();
if (value[i]["name"].isString())
{
name = value[i]["name"].asString();
cout << "name:" << name << endl;
} int age = value[i]["age"].asInt();
if (value[i]["age"].isInt())
{
age = value[i]["age"].asInt();
cout << "age:" << age << endl;
} int aaa = value[i]["aaa"].asInt();
}
} getchar();
return 0;
} int JsonWrite()
{
Json::Value root;
Json::FastWriter writer;
Json::Value person; person["name"] = "往事随风";
person["age"] = 23;
//root.append(person); string json_file = writer.write(person); //单个json串,格式:{"age":23,"name":"往事随风"}
//string json_file = writer.write(root); //json数组,格式:[{"age":23,"name":"往事随风"}] ofstream ofs;
ofs.open("testW.json");
ofs<<json_file;
getchar();
return 0;
} int main()
{
JsonRead();
JsonWrite();
return 0;
}
Json---Windows下使用Jsoncpp的更多相关文章
- windows下consul利用json文件注册服务
windows下,以开发模式启动consul命令 consul agent -dev -config-dir=D:\tools\consul 人工注册服务,新建一个json文件 ,放到D:\tools ...
- Windows下构建ASP.NET Core+Code First+Docker
背景介绍 本文将会示范如何在Windows系统下基于ASP.NET Core构建跨平台服务,并通过Docker容器运行发布. 首先说一下为什么选择这一套组合: 我本人和我们Code4Thought团队 ...
- electron之Windows下使用 html js css 开发桌面应用程序
1.atom/electron github: https://github.com/atom/electron 中文文档: https://github.com/atom/electron/tree ...
- 【转载】Windows下VSCode编译调试c/c++
懒得自己配置或自己配置出现不明问题的朋友可以点这里: [VSCode]Windows下VSCode便携式c/c++环境 http://blog.csdn.net/c_duoduo/article/de ...
- Thrift架构~windows下安装和Hello World及编码引起的错误
最近开始正式接触Thrift架构,很牛B的技术,它被apache收纳了,属于开源中的一员,呵呵. 概念: Thrift源于大名鼎鼎的facebook之手,在2007年facebook提交Apache基 ...
- Windows下elasticsearch插入数据报错!
按照官方文档操作,但是windows下有些不同,它不认识单引号',因此如果这样操作,就会报错: C:\Users\neusoft>curl localhost:9200/b1/b2/1 -d { ...
- windows下的Nodejs及npm的安装、常用命令,Nodejs开发环境配置
http://www.cnblogs.com/webstorm/p/5744942.html ***************************************** 第一步:下载Nodej ...
- 删除 windows 下 node_modules 过深的目录
本文同步自我的个人博客:http://www.52cik.com/2015/11/13/node-modules-del.html 说到 node 的模块,确实既好用又蛋疼.相信无数人吐槽 node_ ...
- 【转】windows下安装和调用curl的方法
本文转自:http://1316478764.iteye.com/blog/2100778 curl是利用URL语法在命令行方式下工作的开源文件传输工具.它支持很多协议:FTP, FTPS, HTTP ...
- [Laravel 5 教程学习笔记] 一、Windows下安装Laravel 5
最近看到一些统计,说是Laravel是目前PHP框架中使用最多的,所以就想来学习下.之前其实也想过学习这个框架,但是每次到第一步安装的时候就卡住了,无奈 .之前用ThinkPHP的时候,下载完放到网 ...
随机推荐
- cocos2dx 3.3多相机下_transformUpdated bug
uint32_t Node::processParentFlags(const Mat4& parentTransform, uint32_t parentFlags) { if(_using ...
- 进程间通信(java)--队列
前言: 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题.通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便 ...
- angular.js 中的作用域 数据模型 控制器
1.angular.js 作为后起之秀的前端mvc框架,他于传统的前端框架都不同,我们再也不需要在html中嵌入脚本来操作对象了.它抽象出了数据模型,控制器及视图. 成功解耦了应用逻辑,数据模型,视图 ...
- [na]那些OVER的封装(pppoe/ppp/ipsec)
什么over什么,如pppoe, ppp的封装都在over对象之后,入下图: PPPOE Ipsec
- [svc]kill pkill killall管理进程
进程讲解 操作配置 http://www.centoscn.com/CentOS/help/2013/0809/1218.html 终止一个进程或终止一个正在运行的程序,一般是通过 kill .kil ...
- 关于NavigationItem.rightBarButtonItem设置
转自:http://blog.csdn.net/zhuzhihai1988/article/details/7701998 第一种: UIImage *searchimage=[UIImage ima ...
- angular学习笔记(二十七)-$http(5)-使用$http构建RESTful架构
在angular中有一个特别为RESTful架构而定制的服务,是在$http的基础上进行了封装. 但是为了学习,我们先看看用直接$http是如何构建RESTful架构的: 假设有一个银行卡的列表.需要 ...
- nyoj119 士兵杀敌(三)
士兵杀敌(三) 时间限制:2000 ms | 内存限制:65535 KB 难度:5 描述 南将军统率着N个士兵,士兵分别编号为1~N,南将军经常爱拿某一段编号内杀敌数最高的人与杀敌数最低的人进 ...
- Makefile学习之路——1
编写makefile,不是一个猛子扎进去试着写一个规则并对之调试,而应该先采用面向依赖关系的思考方法勾勒出makefile要表达怎样的依赖关系,这一点尤为重要.通过不断地练习这种思考方法,才可能达到流 ...
- iOS播放系统声音和震动
在需要声音的类的.h文件中添加 #import <AudioToolbox/AudioToolbox.h>static SystemSoundID shake_sound_male ...