C++ 检查boost属性树中的值是树还是终端值
我一直在寻找boost::property_tree(用于读取json)中的API,我可以用它来确定字段的值是树还是终端值。例如,我有一个json,其中foo的值可以是第一个块中所示的树,也可以是第二个块中所示的字符串C++ 检查boost属性树中的值是树还是终端值,c++,json,boost,boost-propertytree,C++,Json,Boost,Boost Propertytree,我一直在寻找boost::property_tree(用于读取json)中的API,我可以用它来确定字段的值是树还是终端值。例如,我有一个json,其中foo的值可以是第一个块中所示的树,也可以是第二个块中所示的字符串 { "foo": { " n1": "v1", "n2": "v2" } } { "foo": "bar" } 我知道我们可以先用get_child_optional检查。如果返回值为null,那么我们可以检查get_o
{
"foo": {
" n1": "v1",
"n2": "v2"
}
}
{
"foo": "bar"
}
我知道我们可以先用get_child_optional检查。如果返回值为null,那么我们可以检查get_optional。但是有没有更好的方法/API来实现这一点呢?试试这个:
property_tree pt;
...
if(pt.empty())
cout << "Node doesn't have children" << endl;
if(pt.data.empty())
cout << "Node doesn't have data" << endl;
if(pt.empty() && !pt.data.empty())
cout << "Node is terminal value" << endl;
if(!pt.empty() && pt.data.empty())
cout << "Node is a tree" << endl;
属性树pt;
...
if(pt.empty())
我可以使用boost 1.62吗?我必须编写pt.data().empty()
而不是pt.data.empty()
。