因为项目原因需要使用VC6.0解析JSON格式数据,这里首先介绍VC6.0编译JSON解析库的步骤。

首先你必须在http://sourceforge.net/projects/jsoncpp/files/jsoncpp/下载jsoncpp的源代码(.cpp/.h/.inl文件),然后包含到你的工程中:

以下参考博客:https://blog.csdn.net/johnson2008t/article/details/45695669

博文中编译JSON库的时候会有一些错误,但是本文添加到项目编译即生成Json_lib.lib文件,JSON CPP的版本是:jsoncpp-src-0.5.0.tar.gz,如果有遇到问题的朋友欢迎留言交流,谢谢!

第一步:VC6.0新建一个如下图所示:

第二步:将下载下来的“jsoncpp-master.zip”解压,添加src和include目下的文件到项目中,如图所示,

第三步,编译后即可生成Debug和Release需要的lib文件

第四步,新建项目,测试JSON库,目录结构如图所示,

测试demo程序:

封装JSON数据为string

std::string DataToJson()
{Json::FastWriter writerinfo;Json::Value  writevalueinfo;writevalueinfo["id"]=123;   writevalueinfo["time"]="2017.08.30 00:00:00";Json::Value  writedata;writedata["count"] = 1;writedata["name"] = "cpp";writevalueinfo["data"]=writedata;std::string strEmail = writerinfo.write(writevalueinfo);return strEmail;
}示例json:
{"data": {"count": 1,"name": "cpp"},"id": 123,"time": "2017.08.30 00:00:00"
}

解析json数据

void TranslateJson(const string strData)
{// 解析json用Json::ReaderJson::Reader *readerinfo = new Json::Reader(Json::Features::strictMode());// Json::Value是一种很重要的类型,可以代表任意类型。如int, string, object, array...Json::Value root;       if (readerinfo->parse(strData, root)){if (root["id"].isInt()){int nID = root["id"].asInt();}if (root["time"].isString()){std::string strTime = root["time"].asString();}if (root["data"]["count"].isInt()){int nDataCount = root["data"]["count"].asInt();}if (root["data"]["name"].isString()){std::string strDataName = root["data"]["name"].asString();}}::delete readerinfo;readerinfo = NULL;
}

json数组操作

封装

Json::Value arrayObj;   // 构建对象
for (int i = 0; i < 3; i++)
{Json::Value new_item;new_item["id"] = i;new_item["name"] = "test";arrayObj.append(new_item);  // 插入数组成员
}
示例json:
[{"id": 0,"name": "test"},{"id": 1,"name": "test"},{"id": 2,"name": "test"}
]arrayObj.append(new_item); 改为 arrayObj["array"].append(new_item);
示例json:
{"array": [{"id": 0,"name": "test"},{"id": 1,"name": "test"},{"id": 2,"name": "test"}]
}

解析

void TranslateJson(const string strData)
{// 解析json用Json::ReaderJson::Reader *readerinfo = new Json::Reader(Json::Features::strictMode());// Json::Value是一种很重要的类型,可以代表任意类型。如int, string, object, array...Json::Value root;       if (readerinfo->parse(strData, root)){//arrayObj.append(new_item);if (root.isArray()){int nArraySize = root.size();   for (int i=0; i<nArraySize; i++){       int nID = root[i]["id"].asInt();std::string strName = root[i]["name"].asString();   }}// arrayObj["array"].append(new_item);if (root["array"].isArray()){int nArraySize = root["array"].size();  for (int i=0; i<nArraySize; i++){       int nID = root["array"][i]["id"].asInt();std::string strName = root["array"][i]["name"].asString();  }}}::delete readerinfo;readerinfo = NULL;
}

C++解析JSON格式数据相关推荐

  1. python中json模块_Python使用内置json模块解析json格式数据的方法

    本文实例讲述了Python使用内置json模块解析json格式数据的方法.分享给大家供大家参考,具体如下: Python中解析json字符串非常简单,直接用内置的json模块就可以,不需要安装额外的模 ...

  2. php使用 js格式解析,JavaScript解析JSON格式数据的方法示例

    本文实例讲述了JavaScript解析JSON格式数据的方法.分享给大家供大家参考,具体如下: 1.使用JavaScript提供的eval()函数function JsonText1() { var ...

  3. 对JavaScript解析JSON格式数据的理解

    对JavaScript解析JSON格式数据的理解 一.JSON与JavaScript对象的关系 1,JSON的由来: 在21世纪初,Douglas Crockford(Web开发领域最知名的技术权威之 ...

  4. JavaScript解析json格式数据简单示例

    JavaScript解析json格式数据简单示例 本文通过for循环来获取json结点数据,需要的朋友可以参考以下这串json数据用来存储预加载的图片路径: 代码如下: var imgData = [ ...

  5. 【Python使用】Python解析JSON数据的基本方法/用MATLAB解析json格式数据

    一 JSON数据格式介绍 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. JSON建构于两种结构:json是Javascript中的对象和数组中的对象, ...

  6. Java-json系列(一):用GSON解析Json格式数据

    GSON是谷歌提供的开源库,用来解析Json格式的数据,非常好用.如果要使用GSON的话,则要先下载gson-2.2.4.jar这个文件,如果是在Android项目中使用,则在Android项目的li ...

  7. Java解析JSON格式数据

    Java解析JSON格式的数据主要用到两个类JSONObject和JSONArray,这两个类在json-lib-2.4-jdk15包中,在使用JSONObject时除了需要这个包外还需要相关的依赖包 ...

  8. 4、<VBA>学习用刘永富老师插件解析JSON格式数据

    Sub 刘永富老师插件学习()Dim j As API.JSONSet j = New API.JSONj.Parse "{'data':{'route':{'destination':'1 ...

  9. C# 解析JSON格式数据

    JSON简介 JSON(全称为JavaScript ObjectNotation) 是一种轻量级的数据交换格式.它是基于JavaScript语法标准的一个子集.JSON采用完全独立于语言的文本格式,可 ...

最新文章

  1. Control Channel Element (CCE)
  2. 无需成对示例、无监督训练,CycleGAN生成图像简直不要太简单
  3. 4.4 I/O性能侦测
  4. JDK,JRE,JVM区别与联系
  5. 切换终端_首款搭载鸿蒙系统的终端来了:配自研芯片,能跟手机无缝切换
  6. django中怎样生成非HTML格式的内容。
  7. .NET 运行时设置
  8. 网页中的meta property
  9. ubuntu 14.04系统DHCP服务器搭建
  10. XMPP的简介和基本概念
  11. python爬虫︱百度百科的requests请求、百度URL格式、网页保存、爬虫模块
  12. typescript面试题_vue 248+个知识点(面试题)为你保驾护航
  13. 学计算机的学后感,计算机学习心得体会(通用10篇)
  14. 以观察者设计模式举例的房产信息系统
  15. js删除节点的坑(删不完),以li为列
  16. 微信开发常见问题:自动音乐播放,alert 显示网址
  17. 读 Frank Thilly 之《西方哲学史:修补增订版》
  18. 关于loop unwinding
  19. 网路视屏学习资源共享
  20. (附源码)springboot高校学生健康打卡系统的设计与实现 毕业设计 021009

热门文章

  1. 硕士毕业论文常见的排版小技巧
  2. java分布式开发 毕玄_阿里毕玄:RPC 框架优化之路,从 37k 到 168k
  3. Delphi自编程序生成.dfm以及关联.pas的方法二
  4. 【Arduino+ESP32专题】案例:使用INA3221监控电压电流
  5. 狸窝全能视频转换器将视频转为超高清
  6. vite-vue3_pinia 登录
  7. 求读取CATIA标注的方法或者样例代码 Annotion
  8. 记录成长点滴,留住美满幸福
  9. 计算机函数求娶总和的函数是,奇穴重数究竟靠什么判定?
  10. SequoiaDB 巨杉数据库 学习-高可用与容灾