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");

Может кто-нибудь дать мне полезный совет, как получить доступ к этому дереву?!?

Ответы на вопрос(2)

Ваш ответ на вопрос