测试boost属性树是否存储基元或子树

时间:2016-02-05 17:00:39

标签: c++ json boost boost-propertytree

我正在解析一个JSON文件,其中与键对应的值可以是基元(字符串)或子树。例如,用于存储有关单个雇主的人的信息,例如

{
    "employer" : "NASA";
}

或拥有多个雇主的人,例如

{
    "employer" :
    {
        "weekdays" : "Taco Bell" ,
        "weekends" : "Google Inc"
    }
}

在解析雇主密钥时,我需要测试其属性树值是存储原始(单个雇主)还是子树(多个雇主)。我已尝试get_value_optional,如下所示,但我仍然会初始化employerName,这是一个空字符串。还有另一种方法可以解决这个问题。

boost::optional<std::string> employerName = propertyTree.get_value_optional<std::string>();
if( employerName.is_initialized() )
{
    std::string name = employerName.get(); // returns empty string if propertyTree stores a subtree
}

1 个答案:

答案 0 :(得分:0)

找到答案:propertyTree.size()