boost json生成和解析用法
json c++库还是有很多的,因为工作上经常使用boost,这里选用boost的json,记录下用法。
举个栗子:
如果我们要生成如下格式的json:
{
"name":"jim",
"info":
{
"weight":"",
"all_phone":
[
{
"phone":""
},
{
"phone":""
}
]
}
}
解析和生成的示例代码如下
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>
#include <boost/foreach.hpp>
#include <vector>
using namespace boost::property_tree;
using namespace std;
bool CreateJson(wstring &wstr)
{
wstringstream wstream;
try
{
wptree pt;
pt.put(L"name",L"jim");
wptree info;
info.put(L"weight",L"");
wptree phone,phone_item1,phone_item2;
phone_item1.put(L"phone",L"");
phone_item2.put(L"phone",L"");
phone.push_back(make_pair(L"",phone_item1));
phone.push_back(make_pair(L"",phone_item2));
info.put_child(L"all_phone",phone);
pt.push_back(make_pair(L"info",info));
write_json(wstream,pt); }
catch(ptree_error pt)
{
pt.what();
return false;
}
wstr = wstream.str();
return true;
}
bool ParseJson(wstring &wstr)
{
try
{
wptree pt;
wstringstream wstream(wstr);
read_json(wstream,pt);
wstring wstrName = pt.get<wstring>(L"name");
wptree info = pt.get_child(L"info");
wstring weight = info.get<wstring>(L"weight");
int w=;
w=info.get<int>(L"weight");
wptree phones = info.get_child(L"all_phone");
vector<wstring>vcPhone;
BOOST_FOREACH(wptree::value_type &v,phones)
{
vcPhone.push_back(v.second.get<wstring>(L"phone"));
}
}
catch(ptree_error pt)
{
pt.what();
return false;
}
return true;
}
int _tmain(int argc, _TCHAR* argv[])
{
wstring wstr;
CreateJson(wstr);
ParseJson(wstr);
return ;
}
用法还是很简单的
这里需要注意的是:
1 boost json不支持空数组,在本例中空数组对应的格式为"all_phone":"";
2 空的字符串字段转换为数字会抛异常。
boost json生成和解析用法的更多相关文章
- Android Json生成及解析实例
JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据 ...
- DELPHI XE10,JSON 生成和解析,再利用INDYHTTP控件POST
Delphi XE10,Json 生成和解析,再利用indyhttp控件Post 年09月20日 :: 阅读数: --不多说,直接上代码 procedure TFrmMain.Brand; var J ...
- Qt之JSON生成与解析
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - December ...
- 【转载】Qt之JSON生成与解析
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - December ...
- Json生成与解析
JSON常用与服务器进行数据交互,JSON中"{}"表示JSONObject,"[]"表示JSONArray 如下json数据: {"singers& ...
- delphi c++builder JSON 生成与解析 例子
json,System.JSON,REST.JSON JSON有两种数据结构,对象和数组. 对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,...} 数组 ...
- fastjson生成和解析json数据,序列化和反序列化数据
本文讲解2点: 1. fastjson生成和解析json数据 (举例:4种常用类型:JavaBean,List<JavaBean>,List<String>,List<M ...
- fastjson生成和解析json数据
本文讲解2点: 1. fastjson生成和解析json数据 (举例:4种常用类型:JavaBean,List<JavaBean>,List<String>,List<M ...
- Boost.JSON Boost的JSON解析库(1.75首发)
目录 目录 Boost的1.75版本新库 JSON库简介 JSON的简单使用 编码 最通用的方法 使用std::initializer_list json对象的输出 两种对比 解码 简单的解码 增加错 ...
随机推荐
- 聚类算法初探(六)OPTICS
最近由于工作需要,对聚类算法做了一些相关的调研.现将搜集到的资料和自己对算法的一些理解整理如下,供大家参考. 另外在算法代码方面,我也做了一些实现(包括串行和并行),欢迎感兴趣的朋友探讨和交流. 第一 ...
- Jquery Mobile 记录
使用的是C#语言,.Net+Jquery Mobile 框架开发 1.使用水平组切换操作 <fieldset id="Tfdset1" data-role="con ...
- hdu 4707 Pet hdu 2013 Asia Regional Online —— Warmup
一道简单的搜索题目,建一个树,根节点是 0 ,连接的两个节点的距离是 1 ,求 到 根节点长度是2的节点的个数. #include<stdio.h> #include<string. ...
- 如何创建javascript只读变量
最近学习了一下ES标准,发现其实有很多直接间接的方法实现一个只读变量,这里总结一下. 1.最直接的是利用对象属性的特性来实现: var obj = {pro1:1}; Object.definePro ...
- SharePreferences类的使用
简述:以key-value键值对的方式将数据保存到Android自身定义的文件夹(/data/data/<package name>/shared_prefs root才可见的文件夹)中 ...
- LinkList的实现
public class MyLinkedList<AnyType> implements Iterable<AnyType> { @Override public Itera ...
- linux dd命令
dd 是 Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. 1. 命令简介 dd 的主要选项: 指定数字的地方若以下列字符结尾乘以相应的数 ...
- 如何在IIS 中配置应用程序(Convert to Application)?
1.打开IIS 2.选择待操作的虚拟目录 3.鼠标右键,点击"Convert to Application” 4.点击connect as 5.选中Specific user,并点击Set ...
- SQL Server 的 3 种连接
第一种 1. nested loop: select * from tableA inner join tableB on tableA.X = tableB.X; 它的执行过程是这样的.对于tabl ...
- js打开新窗口的两种方式
1.超链接<a href="http://www.jb51.net" title="脚本之家">Welcome</a>等效于js代码wi ...