"user": {
"1": {
"ID": "1",
"Name": "wang"
},
"2": {
"ID": "2",
"Name": "zhang"
},
"3": {
"ID": "3",
"Name": "li"
}
}
} //Json格式如上
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>
#include<iostream>
using namespace std;
void generate_user();
void read_user();
const std::string file_path="E:\\test.txt";
const std::string file_path1="E:\\C++\\boostjson.txt";
int main()
{
generate_user();
read_user();
return 0;
}
void generate_user()
{
boost::property_tree::ptree root;
boost::property_tree::ptree items;
boost::property_tree::ptree item1;
item1.put("ID","1");
item1.put("Name","wang");
items.push_back(std::make_pair("1",item1));
boost::property_tree::ptree item2;
item2.put("ID","2");
item2.put("Name","zhang");
items.push_back(std::make_pair("2",item2));
boost::property_tree::ptree item3;
item3.put("ID","3");
item3.put("Name","li");
items.push_back(std::make_pair("3",item3));
root.put_child("user",items);
boost::property_tree::write_json(file_path,root);
}
void read_user()
{
boost::property_tree::ptree root;
boost::property_tree::ptree items;
boost::property_tree::read_json<boost::property_tree::ptree>(file_path,root);
items=root.get_child("user");
for (boost::property_tree::ptree::iterator it=items.begin();it!=items.end();++it)
{
//遍历读出数据
string key=it->first;//key ID
string ID=it->second.get<string>("ID");
string Name=it->second.get<string>("Name");
boost::property_tree::write_json(file_path1,root);
cout<<key<<endl;
cout<<ID<<endl;
cout<<Name<<endl;
}
}
例子二
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>
#include<iostream>
#include <boost/foreach.hpp>
#include<string>
using namespace std;
int main()
{
std::string str = "{\"code\":0,\"images\":[{\"url\":\"fmn057/20111221/1130/head_kJoO_05d9000251de125c.jpg\"},{\"url\":\"fmn057/20111221/1130/original_kJoO_05d9000251de125c.jpg\"}]}";
using namespace boost::property_tree;
std::stringstream ss(str);
ptree pt;
try{
read_json(ss, pt);
}
catch(ptree_error & e) {
return 1;
}
// 修改/增加一个key-value,key不存在则增加
pt.put("upid", "00001");
// 插入一个数组
ptree exif_array;
ptree array1, array2, array3;
array1.put("Make", "NIKON");
array2.put("DateTime", "2011:05:31 06:47:09");
array3.put("Software", "Ver.1.01");
exif_array.push_back(std::make_pair("", array1));
exif_array.push_back(std::make_pair("", array2));
exif_array.push_back(std::make_pair("", array3));
// exif_array.push_back(std::make_pair("Make", "NIKON"));
// exif_array.push_back(std::make_pair("DateTime", "2011:05:31 06:47:09"));
// exif_array.push_back(std::make_pair("Software", "Ver.1.01"));
pt.put_child("exifs", exif_array);
std::stringstream s2;
write_json(s2, pt);
std::string outstr = s2.str();
cout<<outstr<<endl;
return 0;
}