JSON

json使用简明教程及boost

字号+ 作者:H5之家 来源:H5之家 2017-05-21 12:01 我要评论( )

使用JsonCpp前先来熟悉几个主要的类:

一. 使用jsoncpp解析json

Jsoncpp是个跨平台的开源库,首先从上下载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

[cpp]
view plain

2. 从文件解析json

json文件内容:

[cpp]
view plain

解析代码:

[cpp]
view plain

3. 在json结构中插入json

[cpp]
view plain

4. 输出json

[cpp]
view plain

二. 使用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

解析一段下面的数据:

[html]
view plain

[cpp]
view plain

2. 构造json

[cpp]
view plain

三. 两种解析库的使用经验

1. 用boost::property_tree解析字符串遇到"\/"时解析失败,而jsoncpp可以解析成功,要知道'http://www.xuebuyuan.com/'前面加一个'\'是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,由于遇到问题太多只能换其它库了。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • JSON与JAVA数据的转换

    JSON与JAVA数据的转换

    2017-05-21 12:02

  • PHP处理JSON字符串key缺少双引号的解决方法

    PHP处理JSON字符串key缺少双引号的解决方法

    2017-05-21 11:02

  • JSON详解,json

    JSON详解,json

    2017-05-21 09:01

  • Swift JSON数据解析生成视频教程

    Swift JSON数据解析生成视频教程

    2017-05-20 13:02

网友点评