boost property_tree解析json文件相关文档如下:json_parserbasic_ptree

json_parser:
read_json(filename, ptree):用于将filename文件中的内容读入ptree结构中。
write_json(filename, ptree):用于将ptree结构中的内容写入filename中。
basic_ptree:
self_type& get_child(path_type):
get_value<>: 以某种格式获得某个元素的值.例子:https://blog.csdn.net/shyanyang/article/details/44203169

自己的实践:
#include <iostream>
#include <string>
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>
using namespace std;
using namespace boost::property_tree; int main()
{
ptree pt;
ptree children;
ptree child1, child2, child3; child1.put("", );
child2.put("", );
child3.put("", );
//write_json("test2.json", child1); //put空字符串后,马上转json会报错。 children.push_back(std::make_pair("", child1));
children.push_back(std::make_pair("", child2));
children.push_back(std::make_pair("", child3));
write_json("test3.json", children); //此时就不会报错. 此时不会生成数组. pt.add_child("MyArray", children); //add_child操作之后才生成数组的.如果要生成[]嵌套[],需要在外层再进行一次ptOutArray.push_back(make_pair("", ptInnerArray)),最后再进行add_child操作. write_json("test1.json", pt);
return ;
}
test1.json内容:
{
"MyArray": [
"1",
"2",
"3"
]
}
test3.json内容:

{
"": "1",
"": "2",
"": "3"
}

另外的说明演示.

int main()
{
ptree out;
ptree pt;
ptree children;
ptree child; for (int i = ; i < ; i++)
{
child.put("", i);
// children.push_back(std::make_pair("", child));
children.put_child("", child);//add_child,put_child的key不能为空;而make_pair可以加入空值.
} write_json("test3.json", children); //此时就不会报错 // pt.push_back(make_pair("stock_pool", children)); //当key不为空时,add_child和push_back(make_pair())的效果是一样的.(除了我知道的键里含"."的情况,见下面的例子)
pt.put_child("stock_pool", children);
pt.add_child("stock_pool", children); // out.push_back(std::make_pair("data", pt));
out.put_child("data", pt);
// out.put_child("data", pt);//put操作时,key一样时只能不能够再添加上去,而add_child没有这个限制.
ostringstream os;
write_json(os, out);
cout << os.str() << endl;
write_json("test1.json", pt);
return ;
}

property_tree中的put( , ),push_back(make_pair( , ))中的第一个参数可以为空字符串;而put_child( , ),add_child( , )的第一个参数不能为空字符串.

在进行add_child操作时,如果键中有"."的话,会割裂开来.比如键为"he.llo"时,此时,需要用push_back来替代add_child了.

{
"he": {
"llo": [
[
"",
"",
""
]
]
}
}

boost生成json的更多相关文章

  1. boost生成json中的put操作

    ptree中的put操作后可以加<>,指定类型,不加<>采用默认的类型,感觉不加反而更好用.用法见下面例子. #include <iostream> #includ ...

  2. Hibernate实体生成JSON的问题及解决

    1.延迟加载所造成的代理对象无法正常序列化的问题 在实体类上添加注解: @JsonIgnoreProperties({ "hibernateLazyInitializer", &q ...

  3. php生成json或者xml数据

    , ,'数据返回成功',$arr);echo $xml;?>

  4. PHP中生成json信息的方法

    <?php //php中生成json信息 //json_encode(数组/对象) $color = array('red','blue','green'); //[索引数组] echo jso ...

  5. php 生成 Json

    php 生成 Json 部分 <?php $arr_result = array(); //返回值 $arr_result['result'] = '0'; $arr_result['calle ...

  6. PHP“Cannot use object of type stdClass as array” (php在调用json_decode从字符串对象生成json对象时的报错)

    php再调用json_decode从字符串对象生成json对象时,如果使用[]操作符取数据,会得到下面的错误 错误:Cannot use object of type stdClass as arra ...

  7. fastjson生成json时Null属性不显示

    举个例子 生成JSON代码片段 Map < String , Object > jsonMap = new HashMap< String , Object>(); jsonM ...

  8. C#生成JSON数据

    protected void Page_Load(object sender, EventArgs e) { Response.Clear(); Response.ContentType = &quo ...

  9. 生成json对象

    JSONObject 对于放入的object,最终生成的json是什么样的? 两个JavaBean: public class ClassBean { private int grade; priva ...

随机推荐

  1. 【问题集】redis.clients.jedis.exceptions.JedisDataException: ERR value is not an integer or out of range

    redis.clients.jedis.exceptions.JedisDataException: ERR value is not an integer or out of range incrm ...

  2. vba 调用 countif 函数问题

    源数据是A1:G18,需求是在K列显示A1:A18中各单元格重复出现的次数.在L列中是用countif函数直接计算的, Private Sub test() Dim rng As Range, i A ...

  3. 智能文件选择列表—— bat 批处理

    智能文件选择列表 *.wim @echo off setlocal enabledelayedexpansion title 智能文件选择列表 pushd %~dp0 & cd /d %~dp ...

  4. mysql迁移sqlserver

    数据迁移的工具有很多,基本SSMA团队已经考虑到其他数据库到SQL Server迁移的需求了,所以已经开发了相关的迁移工具来支持. 此博客主要介绍MySQL到SQL Server数据迁移的工具:SQL ...

  5. Nodejs----简介

    1.概述: Node.js是基于Chrome JavaScript运行时建立的一个平台,实际上它是对Google Chrome V8引擎进行了封装,它主要用于创建快速的.可扩展的网络应用.Node.j ...

  6. CCPC-Wannafly Winter Camp Day3 Div1 - 排列

    题目链接:https://zhixincode.com/contest/14/problem/A?problem_id=203 time limit per test: 1 secondmemory ...

  7. influxdb服务器 relay

    https://www.influxdata.com/time-series-platform/influxdb/ https://www.xusheng.org/blog/2016/07/30/pe ...

  8. Altium Designer 绘图流程及快捷键

    1.Shift+Ctrl+g 设置栅格捕捉大小 2.Q 切换单位 3.E+N +点击字体 改变字体大小 4.自动布线前需在Mechanical 层和keepout层添加一个边框 5.打过孔实现双面走线 ...

  9. day2_python基础

    1.变量: 用来存东西的,左边是名字,右边是值 2.python中的单引号.双信号.三引号 单引号和双引号和三引号没什么区别,用哪个都可以,如果定义字符串里面如果有单引号,则外面用双引号;如果字符串里 ...

  10. idea 在tomcat启动的时候发现控制台输出的是乱码

    先前觉得是tomcat的问题,后来发现是idea的问题: 打开IntelliJ IDEA本地安装目录中bin文件夹下的idea.exe.vmoptions和idea64.exe.vmoptions这两 ...