6

フィールドの値がツリーかターミナル値かを判断するために使用できる、boost::property_tree (json の読み取りに使用される) で API を探していました。たとえば、foo の値が最初のブロックに示すようにツリーになるか、2 番目のブロックに示すように文字列になる json があります。

{
    "foo": {
        " n1": "v1",
        "n2": "v2"
    }
}

{
    "foo": "bar"
}

最初に get_child_optional で確認できることはわかっています。戻り値が null の場合は、get_optional を確認できます。しかし、これを行うためのより良い方法/APIはありますか?

4

1 に答える 1

12

これを試して:

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;
于 2014-02-04T15:54:32.623 に答える