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



我有一个示例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}

代码:

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

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

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

解释它的Boost文档部分。

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

最新更新