2013-03-04 47 views
5

我一直在尋找boost :: property_tree中的API(用於讀取json),我可以使用它來確定一個值字段是樹或終端值。例如,我有一個json,其中foo的值既可以是第一個塊中所示的樹,也可以是第二個塊中所示的字符串。檢查增強屬性樹中的值是樹還是終端值

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

{ 
    "foo": "bar" 
} 

我知道我們可以先用get_child_optional檢查。如果返回值爲null,那麼我們可以檢查get_optional。但是,有沒有更好的方法/ apis來做到這一點?

回答

7

試試這個:

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; 
+1

我使用升壓1.62,我必須寫'pt.data()空'的(),而不是'pt.data.empty()'。 – Skywalker13 2016-12-13 09:15:02