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生成和解析用法的更多相关文章

  1. Android Json生成及解析实例

    JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据 ...

  2. DELPHI XE10,JSON 生成和解析,再利用INDYHTTP控件POST

    Delphi XE10,Json 生成和解析,再利用indyhttp控件Post 年09月20日 :: 阅读数: --不多说,直接上代码 procedure TFrmMain.Brand; var J ...

  3. Qt之JSON生成与解析

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - December ...

  4. 【转载】Qt之JSON生成与解析

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - December ...

  5. Json生成与解析

    JSON常用与服务器进行数据交互,JSON中"{}"表示JSONObject,"[]"表示JSONArray 如下json数据: {"singers& ...

  6. delphi c++builder JSON 生成与解析 例子

    json,System.JSON,REST.JSON JSON有两种数据结构,对象和数组. 对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,...} 数组 ...

  7. fastjson生成和解析json数据,序列化和反序列化数据

    本文讲解2点: 1. fastjson生成和解析json数据 (举例:4种常用类型:JavaBean,List<JavaBean>,List<String>,List<M ...

  8. fastjson生成和解析json数据

    本文讲解2点: 1. fastjson生成和解析json数据 (举例:4种常用类型:JavaBean,List<JavaBean>,List<String>,List<M ...

  9. Boost.JSON Boost的JSON解析库(1.75首发)

    目录 目录 Boost的1.75版本新库 JSON库简介 JSON的简单使用 编码 最通用的方法 使用std::initializer_list json对象的输出 两种对比 解码 简单的解码 增加错 ...

随机推荐

  1. SQL Common Sense 碎片一

    1.关于时间 SELECT GETDATE() SELECT DATEPART(d,'2014-05-20 14:20:55.347') SELECT DATEDIFF(d,'2014-05-20 1 ...

  2. HTML需掌握的基础

    首先,我们学习web前端开发基础技术需要掌握的是HTML.CSS.JavaScript语言,那么在下先解释一下何为HTML.CSS.JavaScript语言. HTML是网页内容的载体.内容就是网页制 ...

  3. Reset Password Functionality FAQ

    In this Document   Purpose   Questions and Answers   How can users request a password reset?   How d ...

  4. 关于Apache+PHP+MySQL的安装

    除了在安装MySQL的时候花了三天的时间,也学习了如何看错误日志,如何看配置文件等, Apache+PHP的安装都比较顺利,主要是要按照一个文档来安装,不要东拼西凑, 个人认为这篇“百度经验”写得很好 ...

  5. thoughtworks家庭作业C++版本

    商品类: #ifndef ITEM_H_ #define ITEM_H_ class SalesTax; //This represents the Items which don't have an ...

  6. mysql5 乱码问题解决方案

    今天在写项目时碰到了mysql数据库数据乱码的问题,也从网上查了很多方法,前后折腾了两个小时才终于调整好.现在就把调整过程中碰到的一些问题记录下来: 1.项目是SSH架构,一开始我以为是调用hiber ...

  7. java中关于窗体居中显示问题

    最近在学着用java写qq聊天程序,首先是登录和聊天界面,书上没有给出居中显示,通过上网查找知道有两种方案 先说第一种方法,也是以前用的方法 /获得屏幕大小Dimension screenSize = ...

  8. 老司机带你用vagrant打造一站式python开发测试环境

      前言 作为一个学习和使用Python的老司机,好像应该经常总结一点东西的,让新司机尽快上路,少走弯路,然后大家一起愉快的玩耍. 今天,咱们就使用vagrant配合xshell打造一站式Python ...

  9. tabBar中tabBarItem选中颜色自定义设置

    1.在storyBoard中,选中tabBarController,设置tabBar中KeyPath中的(selectedImageTintColor)如图 2. 直接代码设置 tabBarContr ...

  10. C语言程序设计(翁恺)--第三周课件中的三个遗留点

    刚刚写完第二周遗留点,下面写第三周的 第三周:判断 1.if和else后面也可以没有{}而是一条语句.如果if后不带{},但是后面跟了两条语句,并且后面还有else语句,那么程序会怎么执行? 在Dev ...