C++的Json解析库:jsoncpp和boost
来源:互联网 发布:蛮牛unity3d 百度云 编辑:程序博客网 时间:2024/06/03 23:42
JSON(JavaScript Object Notation)跟xml一样也是一种数据交换格式,了解json请参考其官网http://json.org,本文不再对json做介绍,将重点介绍c++的json解析库的使用方法。json官网上列出了各种语言对应的json解析库,作者仅介绍自己使用过的两种C++的json解析库:jsoncpp(v0.5.0)和Boost(v1.34.0)。
一. 使用jsoncpp解析json
Jsoncpp是个跨平台的开源库,首先从http://jsoncpp.sourceforge.net/上下载jsoncpp库源码,我下载的是v0.5.0,压缩包大约107K,解压,在jsoncpp-src-0.5.0/makefiles/vs71目录里找到jsoncpp.sln,用VS2003及以上版本编译,默认生成静态链接库。 在工程中引用,只需要include/json及.lib文件即可。
使用JsonCpp前先来熟悉几个主要的类:
Json::Value 可以表示里所有的类型,比如int,string,object,array等,具体应用将会在后边示例中介绍。
Json::Reader 将json文件流或字符串解析到Json::Value, 主要函数有Parse。
Json::Writer 与Json::Reader相反,将Json::Value转化成字符串流,注意它的两个子类:Json::FastWriter和Json::StyleWriter,分别输出不带格式的json和带格式的json。
1. 从字符串解析json
2. 从文件解析json
json文件内容:
解析代码:
3. 在json结构中插入json
4. 输出json
二. 使用Boost property_tree解析json
property_tree可以解析xml,json,ini,info等格式的数据,用property_tree解析这几种格式使用方法很相似。
解析json很简单,命名空间为boost::property_tree,reson_json函数将文件流、字符串解析到ptree,write_json将ptree输出为字符串或文件流。其余的都是对ptree的操作。
解析json需要加头文件:
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>
1. 解析json
解析一段下面的数据:
2. 构造json
三. 两种解析库的使用经验
1. 用boost::property_tree解析字符串遇到"\/"时解析失败,而jsoncpp可以解析成功,要知道'/'前面加一个'\'是JSON标准格式。
2. boost::property_tree的read_json和write_json在多线程中使用会引起崩溃。
针对1,可以在使用boost::property_tree解析前写个函数去掉"\/"中的'\',针对2,在多线程中同步一下可以解决。
我的使用心得:使用boost::property_tree不仅可以解析json,还可以解析xml,info等格式的数据。对于解析json,使用boost::property_tree解析还可以忍受,但解析xml,由于遇到问题太多只能换其它库了。
出处:http://blog.csdn.net/hzyong_c/article/details/7163589
- C++的Json解析:jsoncpp 和boost
- C++的Json解析库:jsoncpp和boost
- C++的Json解析库:jsoncpp和boost
- C++的Json解析库:jsoncpp和boost
- C++的Json解析库:jsoncpp和boost .
- C++的Json解析库:jsoncpp和boost
- C++的Json解析库:jsoncpp和boost (转)
- C++的Json解析库:jsoncpp和boost
- C++的Json解析库:jsoncpp和boost
- C++的Json解析库:jsoncpp和boost
- C++的Json解析库:jsoncpp和boost
- C++的Json解析库:jsoncpp和boost
- C++的Json解析库:jsoncpp和boost .
- C++的Json解析库:jsoncpp和boost .
- C++的Json解析库:jsoncpp和boost
- C++的Json解析库:jsoncpp和boost .
- C++的Json解析库:jsoncpp和boost
- C++的Json解析库:jsoncpp和boost
- spring - cvc-complex-type.2.4.c: The matching wildcard is strict,
- 为eclipse neon配置Tomcat 9.0,解决添加jsp文件报错问题
- git视频及对初学者的学习建议
- Solr 扩展:TOMCAT配置数据源
- 就python3下安装lxml
- C++的Json解析库:jsoncpp和boost
- ubuntu 14.04 无法关机,无法重启,无法合盖子,风扇狂转问题综合解决
- 汇编写启动代码之关看门狗和设置栈和调用C语言和ICache
- Hadoop(08) MR入门程序
- S5PV210重定位引入和链接脚本
- com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource getPoolManager:462 -> Initializing c3p0 pool.
- BFS广度优先搜索(11)--hdu2102(基础题)
- 经典算法面试题及答案
- 基于jquery做插件扩展功能