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 ...