我正在尝试使用boost::property_tree解析以下JSON文件。
{
"pi": 3.141,
"temp": 3.141,
"happy": true,
"name": "Niels",
"nothing": null,
"answer": {
"everything": 42
},
"list": [
1,
0,
2
],
"object": {
"currency": "USD",
"value": 42.99
}
}
但对于第二个节点“temp”,它给出错误-
terminate called after throwing an instance of 'boost::wrapexcept<boost::property_tree::ptree_bad_path>'
what(): No such node (temp)
Aborted (core dumped)
@ubuntu:~/git_
编写了如下代码-
std::ifstream file(jsonPath, std::ifstream::binary);
using json = nlohmann::json;
namespace pt = boost::property_tree;
pt::ptree root;
pt::read_json(jsonPath, root); // Load the json file in this ptree
string valPi = root.get<string>("pi");
string valtemp = root.get<string>("temp");
2条答案
按热度按时间neskvpey1#
Boost属性树不是JSON库。
如果已经包含了
nlohmann::json
,为什么还要使用它呢?你的选择器路径可能与JSON不匹配,这很难说,因为你展示的例子工作正常:
**一个
图纸
没问题。
但是,请注意所有类型信息是如何丢失的,这只是触及PropertyTree中“限制”的表面:https://www.boost.org/doc/libs/1_75_0/doc/html/property_tree/parsers.html#property_tree.parsers.json_parser
使用Boost JSON
严肃点:
图纸
使用nlohmann::json
一个月一次
图纸
hmmo2u0o2#
应将其更改为:
如果您想要第2级:
或者更喜欢使用另一种定界符: