有没有办法阻止Boost json解析器输出"没有这样的节点"每当传入无效的子位置时到控制台?
jsonNode.get_child("invalid.node.location");
我尝试更改代码,为默认值添加第二个参数,编译器说它是无效参数
Code Snippet(siteTree是另一个ptree),位置节点是JSON中可用的数组:
const ptree& test = siteTree.get_child("location", empty_ptree<ptree>());
错误1:
Function 'empty_ptree' could not be resolved
错误2:
Invalid arguments '
Candidates are:
boost::property_tree::basic_ptree<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,std::basic_string<char,std::char_traits<char>,std::allocator<char>>,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char>>>> & get_child(const boost::property_tree::string_path<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::property_tree::id_translator<std::basic_string<char,std::char_traits<char>,std::allocator<char>>>> &)
const boost::property_tree::basic_ptree<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,std::basic_string<char,std::char_traits<char>,std::allocator<char>>,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char>>>> & get_child(const boost::property_tree::string_path<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::property_tree::id_translator<std::basic_string<char,std::char_traits<char>,std::allocator<char>>>> &)
boost::property_tree::basic_ptree<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,std::basic_string<char,std::char_traits<char>,std::allocator<char>>,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char>>>> & get_child(const boost::property_tree::string_path<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::property_tree::id_translator<std::basic_string<char,std::char_traits<char>,std::allocator<char>>>> &, boost::property_tree::basic_ptree<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,std::basic_string<char,std::char_traits<char>,std::allocator<char>>,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char>>>> &)
const boost::property_tree::basic_ptree<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,std::basic_string<char,std::char_traits<char>,std::allocator<char>>,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char>>>> & get_child(const boost::property_tree::string_path<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,boost::property_tree::id_translator<std::basic_string<char,std::char_traits<char>,std::allocator<char>>>> &, const boost::property_tree::basic_ptree<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,std::basic_string<char,std::char_traits<char>,std::allocator<char>>,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char>>>> &)'
答案 0 :(得分:1)
一元ptree::get_child
抛出传递无效节点。但是,如果传递的路径无效,则使用两个参数的重载将返回默认值。你可以使用这个重载。或者,ptree::get_child_optional<T>
返回boost::optional<T>
,如果传递的路径无效,则返回boost::null
。