上述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:

  1. #include <fstream>
  2. #include "json.h"
  3. using namespace std;
  4.  
  5. int JsonRead()
  6. {
  7. ifstream ifs;
  8. ifs.open("testR.json");
  9.  
  10. Json::Reader reader;
  11. Json::Value value;
  12. if (!reader.parse(ifs,value,false))
  13. {
  14. return -1;
  15. }
  16.  
  17. if (value.isObject()) //单个json串,格式:{"age":23,"name":"往事随风"}
  18. {
  19. string name = value["name"].asString();
  20. if (value["name"].isString())
  21. {
  22. name = value["name"].asString();
  23. cout << "name:" << name << endl;
  24. }
  25.  
  26. int age = value["age"].asInt();
  27. if (value["age"].isInt())
  28. {
  29. age = value["age"].asInt();
  30. cout << "age:" << age << endl;
  31. }
  32.  
  33. int aaa = value["aaa"].asInt(); //value 没有 "aaa" 这个key的数据时,会给 aaa 赋初值 0
  34. }
  35. else if (value.isArray()) //json数组,格式:[{"age":23,"name":"往事随风"}]
  36. {
  37. cout << value.size() << endl;
  38. for (int i = 0; i < value.size(); i++)
  39. {
  40. string name = value[i]["name"].asString();
  41. if (value[i]["name"].isString())
  42. {
  43. name = value[i]["name"].asString();
  44. cout << "name:" << name << endl;
  45. }
  46.  
  47. int age = value[i]["age"].asInt();
  48. if (value[i]["age"].isInt())
  49. {
  50. age = value[i]["age"].asInt();
  51. cout << "age:" << age << endl;
  52. }
  53.  
  54. int aaa = value[i]["aaa"].asInt();
  55. }
  56. }
  57.  
  58. getchar();
  59. return 0;
  60. }
  61.  
  62. int JsonWrite()
  63. {
  64. Json::Value root;
  65. Json::FastWriter writer;
  66. Json::Value person;
  67.  
  68. person["name"] = "往事随风";
  69. person["age"] = 23;
  70. //root.append(person);
  71.  
  72. string json_file = writer.write(person); //单个json串,格式:{"age":23,"name":"往事随风"}
  73. //string json_file = writer.write(root); //json数组,格式:[{"age":23,"name":"往事随风"}]
  74.  
  75. ofstream ofs;
  76. ofs.open("testW.json");
  77. ofs<<json_file;
  78. getchar();
  79. return 0;
  80. }
  81.  
  82. int main()
  83. {
  84. JsonRead();
  85. JsonWrite();
  86. return 0;
  87. }

  

  

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. unity, 查看内置shader源码

    1,建一个球体. 2,建一个材质,将材质拖到球体上. 3,在材质的shader下拉列表中选择想查看的内置shader,点材质栏右上设置按钮->Select Shader 进入shader面板. ...

  2. dubbo-monitor监控台的部署

    参考资料:dubbo的monitorhttps://github.com/handuyishe/dubbo-monitorhttp://blog.yangcvo.me/2017/01/26/Java- ...

  3. activiti表

    act_re_deployment #部署对象表 act_re_prodef  #流程定义表 act_ge_bytearray #资源文件表 act_ge_property   #主键生成策略表 ac ...

  4. Linux下查看Raid磁盘阵列信息的方法

    Linux下查看软.硬raid信息的方法. 软件raid:只能通过Linux系统本身来查看 cat /proc/mdstat 可以看到raid级别,状态等信息. 硬件raid: 最佳的办法是通过已安装 ...

  5. .NET Garbage-Collectors

    http://mattwarren.org/tags/#Garbage-Collectors https://github.com/dotnet/coreclr/issues https://lldb ...

  6. 手动方式SQL注入脚本命令之精华版

    .判断是否有注入;and = ;and = .初步判断是否是mssql ;and user> .注入参数是字符and [查询条件] and = .搜索时没过滤参数的and [查询条件] and ...

  7. Jquery获取下拉选择节点名称值赋给textbox文本框 获取 父节点的栏目名称编号

    <label for="parentNode" style="float:left" >父级栏目:</label> <select ...

  8. 每日英语:First Offer: Take It Or Keep Waiting?

    Anyone who has searched for a job fresh out of college knows how difficult it is to get that first j ...

  9. python(28)获得网卡的IP地址,如何在其他文件夹中导入python模块

    获得第几块网卡的ip地址: 如何在其他文件夹中导入模块 import sys sys.path.append('/search/chen/tool')#你的代码存放的目录 from Get_Ip im ...

  10. oracle判断查询结果是否为空

    create table test1023(id int); --创建测试表 test1023 declare cnt int; begin select count(*) into cnt from ...