5

我有一个示例 json 记录,我已通过 boost json 解析器解析并将其保存到 boost 属性树以获取所有键值对。ia 遵循代码我能够获取树的第一个属性,但我怎样才能获得第二个属性值?当我尝试获取它时,它向我显示“没有这样的节点”的异常。

如果我迭代树,那么它会向我显示所有键。我不明白它有什么问题。参考: http: //www.boost.org/doc/libs/1_52_0/doc/html/boost_propertytree/accessing.html

json string := {"type":"net.aggregate","post.source":"1209010340", "val":1000}

代码:

boost::property_tree::ptree pt;    
read_json("jSon string object", pt);
cout << pt.get("type", ""); // working
cout <<  pt.get("post.source", "") // showing error ....`
4

2 回答 2

7

由于属性名称包含一个点,因此您必须使用不同的分隔符,因此在您的情况下是:

cout << pt.get(ptree::path_type("post.source", '/'), "");

解释它的 Boost 文档部分

于 2013-03-29T15:30:36.780 回答
1

因为 Boostproperty_tree使用点来分隔不同的对象。当您请求时"post.source",该get函数会查找具有属性的对象post source

于 2012-11-29T11:40:20.300 回答