上述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的更多相关文章

  1. windows下consul利用json文件注册服务

    windows下,以开发模式启动consul命令 consul agent -dev -config-dir=D:\tools\consul 人工注册服务,新建一个json文件 ,放到D:\tools ...

  2. Windows下构建ASP.NET Core+Code First+Docker

    背景介绍 本文将会示范如何在Windows系统下基于ASP.NET Core构建跨平台服务,并通过Docker容器运行发布. 首先说一下为什么选择这一套组合: 我本人和我们Code4Thought团队 ...

  3. electron之Windows下使用 html js css 开发桌面应用程序

    1.atom/electron github: https://github.com/atom/electron 中文文档: https://github.com/atom/electron/tree ...

  4. 【转载】Windows下VSCode编译调试c/c++

    懒得自己配置或自己配置出现不明问题的朋友可以点这里: [VSCode]Windows下VSCode便携式c/c++环境 http://blog.csdn.net/c_duoduo/article/de ...

  5. Thrift架构~windows下安装和Hello World及编码引起的错误

    最近开始正式接触Thrift架构,很牛B的技术,它被apache收纳了,属于开源中的一员,呵呵. 概念: Thrift源于大名鼎鼎的facebook之手,在2007年facebook提交Apache基 ...

  6. Windows下elasticsearch插入数据报错!

    按照官方文档操作,但是windows下有些不同,它不认识单引号',因此如果这样操作,就会报错: C:\Users\neusoft>curl localhost:9200/b1/b2/1 -d { ...

  7. windows下的Nodejs及npm的安装、常用命令,Nodejs开发环境配置

    http://www.cnblogs.com/webstorm/p/5744942.html ***************************************** 第一步:下载Nodej ...

  8. 删除 windows 下 node_modules 过深的目录

    本文同步自我的个人博客:http://www.52cik.com/2015/11/13/node-modules-del.html 说到 node 的模块,确实既好用又蛋疼.相信无数人吐槽 node_ ...

  9. 【转】windows下安装和调用curl的方法

    本文转自:http://1316478764.iteye.com/blog/2100778 curl是利用URL语法在命令行方式下工作的开源文件传输工具.它支持很多协议:FTP, FTPS, HTTP ...

  10. [Laravel 5 教程学习笔记] 一、Windows下安装Laravel 5

    最近看到一些统计,说是Laravel是目前PHP框架中使用最多的,所以就想来学习下.之前其实也想过学习这个框架,但是每次到第一步安装的时候就卡住了,无奈  .之前用ThinkPHP的时候,下载完放到网 ...

随机推荐

  1. MFC改变对话框背景颜色

    原文链接: http://blog.sina.com.cn/s/blog_59955afc0100spjz.html 方法一:调用CWinApp类的成员函数SetDialogBkColor来实现. - ...

  2. DNS与NS、NS记录

    DNS:人们习惯记忆域名,但机器间互相只认IP地址,域名与IP地址之间是一一对应的,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,整个过程是自动进行的. 当你的网站制作完成 ...

  3. Xfire实现webservice时,对象传递规则及解析简析

    Xfire实现webservice,传递对象解析的话,要分两种情况处理:1.基本类型对象:2.复杂对象 其实,在客户端直接传递数组,如String[] int[]等这些无法通过配置具体类型来通知xfi ...

  4. python标准库介绍——21 UserDict 模块详解

    ==UserDict 模块== ``UserDict`` 模块包含了一个可继承的字典类 (事实上是对内建字典类型的 Python 封装). [Example 2-15 #eg-2-15] 展示了一个增 ...

  5. jQuery.ajax() 如何设置 Headers 中的 Accept 内容

    其实很简单,首先如果是常见类型,则请直接设置 dataType 属性 $.ajax({ dataType: "json", type: "get", succe ...

  6. putty的复制和粘贴

    putty在终端中的复制--->只要用左键选中即是复制了,千万不要按右键. 在windows下的复制后,在终端粘贴---> 只要右键即可.

  7. nginx反向代理配置实例分享

    nginx反向代理配置一例. 配置内容如下: user www www; worker_processes 8; error_log /usr/local/webserver/nginx/logs/n ...

  8. mogoose的bug之不能根据类型为number的字段查找数据

    Users.find({paw:6868}).exec() //返回的结果为空 Users.find({paw:"6868"}).exec() //返回的结果也为空 Users.f ...

  9. nyoj 715 Adjacent Bit Counts

    描述 For a string of n bits x1, x2, x3, …, xn,  the adjacent bit count of the string  is given by      ...

  10. jquery,checkbox无法用attr()二次勾选

    今晨,漂亮的测试妹妹提了个奇怪的bug,说我一功能checkbox时隐时现,比如第一次打开有勾选,第n次打开可能就不选了. 想到与美女有亲密接触机会,马上鸡动起来. 经过偶层层抽次剥茧(da da j ...