Тестирование, если дерево свойств boost хранит примитив или поддерево
Я анализирую файл 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
}