#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/xml_parser.hpp>
#include <boost/property_tree/json_parser.hpp>
#include <boost/typeof/typeof.hpp>
#include <sstream>
#include <iostream>
#include <string>
int main()
{
try {
//boost解析 json
boost::property_tree::ptree jsonpt;
//boost::property_tree::read_json("C:\\Data\\test.json", jsonpt);//utf-8文件
//ASCII--------------------
std::string jsonstr(R"(
{
"RecID": "20210225131921664",
"a" : {
"b": 123,
"c" : 456
},
"aa" : [{
"bb": 123,
"cc" : 123
}, {
"bbb": 12345,
"ccc" : 123
}, {
"bbbb": 123,
"cccc" : 123
}]
}
)");
std::stringstream jsonstm;
jsonstm << jsonstr;
boost::property_tree::read_json(jsonstm, jsonpt);//ASCII
//ASCII---------------------
std::string a = jsonpt.get<std::string>("a.c", "0");//取值位置,获取不到时填充默认值
std::string ab = jsonpt.get<std::string>("a.b", "0");
std::cout << a.c_str() << std::endl;
std::cout << ab.c_str() << std::endl;
auto aa = jsonpt.get_child("aa").begin();
std::string cc = aa->second.get("bb", "0");
std::string dd = aa->second.get("cc", "0");
aa++;
std::cout << cc.c_str() << std::endl;
std::cout << dd.c_str() << std::endl;
cc = aa->second.get("bbb", "0");
dd = aa->second.get("ccc", "0");
std::cout << cc.c_str() << std::endl;
std::cout << dd.c_str() << std::endl;
}
catch (...)
{
std::cout << "parse err!" << std::endl;
}
}
boost解析json C++
最新推荐文章于 2024-05-23 09:53:05 发布