解析json后,boost属性树无法检索记录

Dhi*_*wal 4 c++ json boost boost-propertytree

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

如果我迭代树,然后它显示我所有的键.我不明白它是什么错.参考: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}
Run Code Online (Sandbox Code Playgroud)

码:

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

小智 7

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

cout << pt.get(ptree::path_type("post.source", '/'), "");
Run Code Online (Sandbox Code Playgroud)

Boost文档部分解释了它.


Som*_*ude 1

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