Используя json spirit для чтения имени и значения объектов Value в C++

У меня есть текстовый файл, в котором есть данные, записанные в формате JSON. Данные выглядят примерно так:

[
   ...
    {
    "volume": 93, 
    "id": "part-30", 
    "value": 19
  }, 
  {
    "volume": 83, 
    "id": "part-31", 
    "value": 19
  }
  ...
]

После ссылки на это и это

Я дошел до того, что могу прочитать поле "имя" следующей структуры данных. Итак, в остальном, мой код для чтения этого объекта выглядит так:

// read from parts list file to JSON object.
    const char* file_name2( "parts_list.txt" );
    ifstream is2( file_name2 );
    json_spirit::Value value2;
    read( is2, value2 );
    // const Object& addr_array = value.get_obj();
    vector<Value> jsonObj2 = value2.get_array();
    vector<Value>::iterator it;
    vector<RobotParts> final;

    for(it = jsonObj2.begin(); it!=jsonObj2.end(); it++)
    {
        auto valObj = it->get_obj();
        RobotParts rpObj = RobotParts();
        for(auto vo : valObj)
        {
            if(vo.name_=="volume"){
                string s = vo.value_;
            }
        }
        final.push_back(rpObj);
    }

    cout << final.size() << endl;
    return 0;

Но эта строка здесь -> vo.value_; кажется, создает много проблем. Я не могу понять, что тип данных этого объекта. Пока что я пробовал:

  1. Чтение в целое число. Я думал, так как объем имеет целочисленное значение

int i = vo.get_value();

Должно сработать. Но вместо этого он говорит

error: no member named 'get_value' in
  'json_spirit::Pair_impl<json_spirit::Config_vector<std::__1::basic_string<char> > >'
  1. Чтение в строку, чтобы я мог распечатать ее.

строка s = vo.value_;

Это выдает следующую ошибку:

error: no viable conversion from 'Value_type' (aka
      'Value_impl<json_spirit::Config_vector<std::__1::basic_string<char> > >') to 'string' (aka 'basic_string<char, char_traits<char>,
      allocator<char> >')

Я могу, однако, распечатать vo.name_ с помощью cout << vo.name_ << endl в цикле. Это выводит:

...
volume
id
value
volume
id
value
... 

скоро.

Я знаю, что это связано с несовместимостью типов данных, но я потратил два-три часа, чтобы выяснить, как получить доступ к этому значению.

Как мне получить доступ к этим значениям, соответствующим громкости, идентификатору и значению?

0 ответов

Другие вопросы по тегам