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