C++解析JSON格式数据
因为项目原因需要使用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目下的文件到项目中,如图所示,
第四步,新建项目,测试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格式数据相关推荐
- python中json模块_Python使用内置json模块解析json格式数据的方法
本文实例讲述了Python使用内置json模块解析json格式数据的方法.分享给大家供大家参考,具体如下: Python中解析json字符串非常简单,直接用内置的json模块就可以,不需要安装额外的模 ...
- php使用 js格式解析,JavaScript解析JSON格式数据的方法示例
本文实例讲述了JavaScript解析JSON格式数据的方法.分享给大家供大家参考,具体如下: 1.使用JavaScript提供的eval()函数function JsonText1() { var ...
- 对JavaScript解析JSON格式数据的理解
对JavaScript解析JSON格式数据的理解 一.JSON与JavaScript对象的关系 1,JSON的由来: 在21世纪初,Douglas Crockford(Web开发领域最知名的技术权威之 ...
- JavaScript解析json格式数据简单示例
JavaScript解析json格式数据简单示例 本文通过for循环来获取json结点数据,需要的朋友可以参考以下这串json数据用来存储预加载的图片路径: 代码如下: var imgData = [ ...
- 【Python使用】Python解析JSON数据的基本方法/用MATLAB解析json格式数据
一 JSON数据格式介绍 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. JSON建构于两种结构:json是Javascript中的对象和数组中的对象, ...
- Java-json系列(一):用GSON解析Json格式数据
GSON是谷歌提供的开源库,用来解析Json格式的数据,非常好用.如果要使用GSON的话,则要先下载gson-2.2.4.jar这个文件,如果是在Android项目中使用,则在Android项目的li ...
- Java解析JSON格式数据
Java解析JSON格式的数据主要用到两个类JSONObject和JSONArray,这两个类在json-lib-2.4-jdk15包中,在使用JSONObject时除了需要这个包外还需要相关的依赖包 ...
- 4、<VBA>学习用刘永富老师插件解析JSON格式数据
Sub 刘永富老师插件学习()Dim j As API.JSONSet j = New API.JSONj.Parse "{'data':{'route':{'destination':'1 ...
- C# 解析JSON格式数据
JSON简介 JSON(全称为JavaScript ObjectNotation) 是一种轻量级的数据交换格式.它是基于JavaScript语法标准的一个子集.JSON采用完全独立于语言的文本格式,可 ...
最新文章
- Control Channel Element (CCE)
- 无需成对示例、无监督训练,CycleGAN生成图像简直不要太简单
- 4.4 I/O性能侦测
- JDK,JRE,JVM区别与联系
- 切换终端_首款搭载鸿蒙系统的终端来了:配自研芯片,能跟手机无缝切换
- django中怎样生成非HTML格式的内容。
- .NET 运行时设置
- 网页中的meta property
- ubuntu 14.04系统DHCP服务器搭建
- XMPP的简介和基本概念
- python爬虫︱百度百科的requests请求、百度URL格式、网页保存、爬虫模块
- typescript面试题_vue 248+个知识点(面试题)为你保驾护航
- 学计算机的学后感,计算机学习心得体会(通用10篇)
- 以观察者设计模式举例的房产信息系统
- js删除节点的坑(删不完),以li为列
- 微信开发常见问题:自动音乐播放,alert 显示网址
- 读 Frank Thilly 之《西方哲学史:修补增订版》
- 关于loop unwinding
- 网路视屏学习资源共享
- (附源码)springboot高校学生健康打卡系统的设计与实现 毕业设计 021009