zoukankan      html  css  js  c++  java
  • json解析2

    
    

    #include<iostream>
    #include <boost/property_tree/ptree.hpp>
    #include <boost/property_tree/json_parser.hpp>
    using namespace std;
    using namespace boost::property_tree;
    //其实有点像std::list<string,ptree>,自己可以构造一个任何类型的节点插进去,特别数组类型,用法太灵活了
    int main()
    {
    std::string json = "{"A":1,"B":{"C":2,"D":3},"E":[{"pos01":3,"pos03":5},{"pos02":4}]}";
    boost::property_tree::ptree pt,child1,child2 ;
    std::stringstream ss(json) ;
    boost::property_tree::read_json(ss, pt);
    child1 = pt.get_child("B");
    //针对树遍历
    for(auto c:child1)
    {
    cout<< c.first<<c.second.data()<<endl;//这样可以打印出first
    }
    child2 = pt.get_child("E");
    for (ptree::iterator it = child2.begin(); it != child2.end(); ++it)
    {
    auto pt1 = it->second;//first为空

    
    

    for (auto c: pt1)//貌似有括号,不管是[]还是{}就是ptree,遍历树,感觉这个也不常用
    {
    cout<<c.first<<c.second.data();
    }

    
    

    cout << pt1.get<int>("F");//根据节点F取值,而这个second还是一棵树{"F":1}

    
    

    cout << pt1.get_value<int>();//这种取值的方式不行,但这种情况可以,也是数组[1,2,3,4,5],应该是second直接就是他的值了

    
    

    //遍历数组F值,直接获取树里面的节点值

    
    

    }
    system("pause");
    return 0;
    }

    //JCK自解:有一个括号,就要一颗ptree。
    #include<iostream>
    #include <string>
    #include <sstream>
    #include <boost/property_tree/ptree.hpp>
    #include <boost/property_tree/json_parser.hpp>
    int  main()
    {
        boost::property_tree::ptree ptree_root;
        ptree_root.put("root","me_root");//放入Key,value,就是普通的向一个Ptree里面放入一个键值对
    
        boost::property_tree::ptree ptree_items;
        {
            boost::property_tree::ptree pt;  //一棵树
            /*pt.put<int>("item_1",20);*/
            pt.put<int>("item_2",40);
            ptree_items.push_back(make_pair("",pt));//相当于vector,作为一棵子树
        }
    
        {
            boost::property_tree::ptree pt;//又一棵树
            pt.put("item_1","30");
            pt.put("item_2","60");
            ptree_items.push_back(make_pair("",pt));
        }
        ptree_root.put_child("items", ptree_items );//作为子节点
    
        boost::property_tree::write_json("C:\file_path.json",ptree_root);
        getchar();
    }

    今天看的好晕,以前都写过的,又晕了

  • 相关阅读:
    [NOI 2011][BZOJ 2434] 阿狸的打字机
    列出cocos2dx运行场景所有节点信息
    png 转 eps (电脑已安装latex环境前提下)
    latex小记
    第二篇
    博客第一篇
    百度动态规划
    百度约瑟夫算环
    转~最大连续子序列求和
    Oracle学习笔记——一对多的关系关联查询时只关联查找最新的第一条数据
  • 原文地址:https://www.cnblogs.com/zzyoucan/p/3861427.html
Copyright © 2011-2022 走看看