boost解析json

时间:2023-02-05 21:50:05
#include <QtCore/QCoreApplication>

#include <boost/property_tree/ptree.hpp>

#include <boost/typeof/typeof.hpp>

#include <boost/property_tree/json_parser.hpp> 

#include <boost/property_tree/xml_parser.hpp>

#include <iostream> 

using namespace std;

using namespace boost::property_tree;

int main(int argc, char *argv[])

{ 

    QCoreApplication a(argc, argv); 

    string s = "{/"age/" : 26,/"study/":{/"language/":{/"one/":/"chinese/",/"two/":/"math/"},/"fee/":500,/"subject/":[{/"one/":/"china/"},{/"one/":/"Eglish/"}]},/"person/":[{/"id/":1,/"name/":/"chen/"},{/"id/":2,/"name/":/"zhang/"}],/"name/" : /"huchao/"}";
string s = "{age : 26,study:{
language:{one:chinese,two:math},
fee:,
subject:[{one:china},{one:Eglish}]
},
person:[{id:,name:chen},{id:,name:zhang}],
name : huchao}";
ptree pt; stringstream stream(s); //这步不知道为什么要这样 read_json<ptree>( stream, pt); pt.put("study.language.one","physics");//修改数据(这步废了好久时间,最后通过读英文资料解决) pt.put("study.fee",); string s1=pt.get<string>("age"); cout<<s1<<endl; string s2=pt.get<string>("name"); cout<<s2<<endl; string s3=pt.get_child("study").get_child("language").get<string>("one"); cout<<s3<<endl; string s4=pt.get_child("study").get<string>("fee"); cout<<s4<<endl; ptree p1,p2; p1 = pt.get_child("study").get_child("subject");//访问多级节点中的数组数据 for (ptree::iterator it = p1.begin(); it != p1.end(); ++it) { p2 = it->second; //first为空 cout<<"subject="<<p2.get<string>("one")<<endl; } return ; return a.exec(); } // pt.put("conf.theme", "Matrix Reloaded"); // pt.put("conf.clock_style", 13); // pt.put("conf.gui", 0); // pt.put("conf.urls.url","http://www.url4.org"); // pt.add("conf.urls.url","http://www.url4.org"); // write_json("conf.json", pt); // read_json("conf.json",pt); // cout<< pt.get<string>("conf.theme") <<endl; // cout<< pt.get<int>("conf.clock_style") <<endl; // cout<< pt.get<long>("conf.gui") <<endl; // cout<< pt.get("conf.no_prop", 100) <<endl; // BOOST_AUTO(child, pt.get_child("conf.urls")); // for(BOOST_AUTO(pos,child.begin()); pos != child.end(); ++pos) // { // cout<<pos->second.data()<<","; // } // cout<<endl; // ptree pt_1,pt_11,pt_12; // pt_11.put("id","3445"); // pt_11.put<int>("age",29); // pt_11.put("name","chen"); // pt_12.push_back(make_pair("",pt_11)); // pt_12.push_back(make_pair("",pt_11)); // //replace or create child node "data" // pt_1.put_child("data",pt_12); // ostringstream os; // write_json(os,pt_1); // cout<<os.str()<

里面的有些还是比较模糊,原理不清

vs提示个错误:pnode.get<int>("x")不存在从 "char [2]" 转换到 "boost::property_tree::string_path<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,boost::property_tree::id_translator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >" 的适当构造函数

查了半天结果可以运行,这VS也有点坑人吧

boost解析json的更多相关文章

  1. boost解析json&lpar;2&rpar;

    "{ "A":1, "B":{ "C":2, "D":3 }, "E":[ {" ...

  2. Boost property&lowbar;tree解析json

    使用Boost property_tree解析json 之前使用jsoncpp解析json,现在才知道boost就有解析的库,学习一下吧 property_tree可以解析xml,json,ini,i ...

  3. Boost&period;JSON Boost的JSON解析库(1&period;75首发)

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

  4. 更好更快更高效解析JSON说明

    现在来一个实例解析类,直接就把解析JSON到QVariant去了.唯一不足的是没有搞错误处理,具体方法也请各位自行参考json-c的发行文档,这样比较方便叙述,STL或者Boost我都没有认真接触过, ...

  5. boost生成json中的put操作

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

  6. boost生成json

    boost property_tree解析json文件相关文档如下:json_parser.basic_ptree json_parser:read_json(filename, ptree):用于将 ...

  7. Xamarin&period;Android下获取与解析JSON

    一.新建项目 1.新建一个Android项目,并命名为为NetJsonList 2.右击引用,选择添加引用,引用System.Json.dll 二.同步请求 既然是跨平台,我们自然不能按照java下的 ...

  8. 使用Newtonsoft&period;Json&period;dll&lpar;JSON&period;NET&rpar;动态解析JSON、&period;net 的json的序列化与反序列化(一)

    在开发中,我非常喜欢动态语言和匿名对象带来的方便,JSON.NET具有动态序列化和反序列化任意JSON内容的能力,不必将它映射到具体的强类型对象,它可以处理不确定的类型(集合.字典.动态对象和匿名对象 ...

  9. 阶段一:通过网络请求,获得并解析JSON数据(天气应用)

    “阶段一”是指我第一次系统地学习Android开发.这主要是对我的学习过程作个记录. 在上一篇阶段一:解析JSON中提到,最近在写一个很简单的天气预报应用.即使功能很简单,但我还是想把它做成一个相对完 ...

随机推荐

  1. sleep thread process

    $str = 'w0'; for($w=0;$w<999999;$w++){ $sql = 'INSERT INTO w1 (wint,wchar) VALUES ('.$w.',"' ...

  2. 阻止网页内部滚动条mousewheel事件冒泡

    function preventScroll(id){ var _this = document.getElementById(id); if(navigator.userAgent.indexOf( ...

  3. Android热修复之微信Tinker使用初探

      文章地址:Android热修复之微信Tinker使用初探 前几天,万众期待的微信团队的Android热修复框架tinker终于在GitHub上开源了. 地址:https://github.com/ ...

  4. 【mysql】用navicat连接虚拟机mysql出现错误代码&lpar;10038&rpar;

    来源: http://www.cnblogs.com/ohmydenzi/p/5521121.html http://blog.csdn.net/chana1101/article/details/3 ...

  5. php--validate表单验证实例

    验证效果:

  6. iOS第三方支付-支付宝支付

    处理手机中有无支付宝的情况支付宝调用接口: - (void)payOrder:(NSString *)orderStr      fromScheme:(NSString *)schemeStr    ...

  7. ASP&period;Net页面间传值

    一.目前在ASP.NET中页面传值共有这么几种方式: 1.表单提交,   <form action= "target.aspx" method = "post&qu ...

  8. 除trigger&lpar;&rpar;方法外的jquery手动触发事件

    trigger()可以触发指定事件是大家基本都知道的了. 除了trigger()之外我们也可以这样来触发: html <div id="box" style="he ...

  9. C语言字符数组作业

    一.PTA实验作业 题目1:7-1 字符串转换成十进制整数 1. 本题PTA提交列表 2. 设计思路 3.代码截图 4.本题调试过程碰到问题及PTA提交列表情况说明. 1.一开始我没想到怎么判断正负的 ...

  10. sizeof&lpar;结构体&rpar;和内存对齐以及位域

    Win32平台下的微软C编译器的对齐策略: 1) 结构体变量的首地址能够被其最宽基本类型成员的大小所整除: 备注:编译器在给结构体开辟空间时,首先找到结构体中最宽的基本数据类型,然后寻找内存地址能被该 ...