boost解析json
#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的更多相关文章
- boost解析json(2)
"{ "A":1, "B":{ "C":2, "D":3 }, "E":[ {" ...
- Boost property_tree解析json
使用Boost property_tree解析json 之前使用jsoncpp解析json,现在才知道boost就有解析的库,学习一下吧 property_tree可以解析xml,json,ini,i ...
- Boost.JSON Boost的JSON解析库(1.75首发)
目录 目录 Boost的1.75版本新库 JSON库简介 JSON的简单使用 编码 最通用的方法 使用std::initializer_list json对象的输出 两种对比 解码 简单的解码 增加错 ...
- 更好更快更高效解析JSON说明
现在来一个实例解析类,直接就把解析JSON到QVariant去了.唯一不足的是没有搞错误处理,具体方法也请各位自行参考json-c的发行文档,这样比较方便叙述,STL或者Boost我都没有认真接触过, ...
- boost生成json中的put操作
ptree中的put操作后可以加<>,指定类型,不加<>采用默认的类型,感觉不加反而更好用.用法见下面例子. #include <iostream> #includ ...
- boost生成json
boost property_tree解析json文件相关文档如下:json_parser.basic_ptree json_parser:read_json(filename, ptree):用于将 ...
- Xamarin.Android下获取与解析JSON
一.新建项目 1.新建一个Android项目,并命名为为NetJsonList 2.右击引用,选择添加引用,引用System.Json.dll 二.同步请求 既然是跨平台,我们自然不能按照java下的 ...
- 使用Newtonsoft.Json.dll(JSON.NET)动态解析JSON、.net 的json的序列化与反序列化(一)
在开发中,我非常喜欢动态语言和匿名对象带来的方便,JSON.NET具有动态序列化和反序列化任意JSON内容的能力,不必将它映射到具体的强类型对象,它可以处理不确定的类型(集合.字典.动态对象和匿名对象 ...
- 阶段一:通过网络请求,获得并解析JSON数据(天气应用)
“阶段一”是指我第一次系统地学习Android开发.这主要是对我的学习过程作个记录. 在上一篇阶段一:解析JSON中提到,最近在写一个很简单的天气预报应用.即使功能很简单,但我还是想把它做成一个相对完 ...
随机推荐
- Css 常用属性
1. overflow:hidden和zoom:1 verflow:hidden;的作用 1. 隐藏溢出 :2.消除浮动 <style type="text/css"> ...
- 手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单
手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单 手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单 手把手教你开发Chrome扩 ...
- windows下git bash显示中文
1.C:\Program Files\Git\etc\git-completion.bash: alias ls='ls --show-control-chars --color=auto' 说明:使 ...
- Opencv step by step - 自适应阈值
上个博客提到的阈值化只是针对图像全局进行阈值化,opencv提供了一个更好的函数cvAdaptiveThreshold,可以做到局部特征的阈值化,这样一来, 整个图像的信息可以被更好的提取. #inc ...
- 20145208 《Java程序设计》第7周学习总结
20145208 <Java程序设计>第7周学习总结 教材学习内容总结 Lambda 认识Lambda语法 什么是Lambda语法 以下是维基百科上的解释: a function (or ...
- 魅蓝Note2 在Android Studio 与 Eclipse中无法被检测到
昨天到手的Note2 结果发现测试不了,一看魅蓝的版本是android 5.1,然后更新的自己的SDK. 最后…… 仍然不能识别到手机. ———————————— 今天在stackoverflow上搜 ...
- commonjs amd cmd的区别
一篇博客告诉你三者的区别:http://zccst.iteye.com/blog/2215317 告诉你三者同requirejs seajs的区别:http://blog.chinaunix.net/ ...
- [工具类]文件或文件夹xx已存在,则重命名为xx(n)
写在前面 最近在弄一个文件传输的一个东东,在接收文件的时候,如果文件已经存在,该如何处理?提示?删除?感觉直接删除实在不太合适,万一这个文件对用户来说很重要,你给他删除了肯定不行.然后就想到了,win ...
- JS表单学习笔记(思维导图)
导图
- PHP时间日期比较
若要使用PHP来比较日期,最好用DateTime::diff 但是这个是5.3才支持的,如果没有这样的环境,可以使用<.>来比较 如下例子,会输出right $date1=strtotim ...