boost :: ptree найти? или как получить доступ к глубоким массивам? C ++
Я слишком много времени пытаюсь получить доступ к jt_reader ptree из библиотеки boost.
У меня есть файл JSON, который очень часто заполняется: (псевдо-JSON :)
"Foo": {
"nameofFoo:"foofoo"
"Bar": [{
"BarFoo":
{ BarFooDeep: {
BarFooDeepDeep: {
"BarFooValue1": 123
"BarFooValue2" : 456
}
}
}
"FooBar": [ {
"FooBarDeep" :[ {
FooBarDeepDeep:[ {
FooBarValue1: "ineedthis"
FooBarValue2: "andthis"
} ]
FooBarDeepDeep1:[ {
FooBarValue1: "ineedthis"
FooBarValue2: "andthis"
} ]
"FooBarDeep" :[ {
FooBarDeepDeep2:[ {
FooBarValue1: "ineedthis"
FooBarValue2: "andthis"
} ]
FooBarDeepDeep3:[ {
FooBarValue1: "ineedthis"
FooBarValue2: "andthis"
} ]
and so on .... won t complete this now...
Теперь мне нужно только получить FooBarValue1 и FooBarValue2 из всех FooBar.
Я знаю, что ptree собирает массивы вместе с пустыми childs ("")
Я могу получить доступ ко всем членам путем итерации по всем дочерним элементам рекурсивно.
Но нет ли лучшего способа получить доступ к специальным значениям?
Как работает ptree? я всегда получаю ошибки компилятора ...
ptree jsonPT;
read_json( JSON_PATH, jsonPT);
ptree::const_iterator myIT = jsonPT.find("FooBarValue1");
double mlat = boost::lexical_cast<int>(myIT->second.data());
ошибка: преобразование из 'boost :: property_tree :: basic_ptree, std :: basic_string> :: assoc_iterator' в нескалярный тип 'boost :: property_tree :: basic_ptree, std :: basic_string> :: const_iterator' запрошенное ptree :: const_iterator myIT = jsonPT.find ("FooBarValue1");
Может кто-нибудь дать мне полезный совет, как получить доступ к этому дереву?!?