У меня есть текстовый файл, в котором есть данные, записанные в формате 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_;
кажется, создает много проблем.
Я не могу понять, что тип данных этого объекта.
Пока что я пробовал:
int i = vo.get_value< int> ();
Должно сработать. Но вместо этого он говорит
error: no member named 'get_value' in
'json_spirit::Pair_impl<json_spirit::Config_vector<std::__1::basic_string<char> > >'
строка 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
...
скоро.
Я знаю, что это связано с несовместимостью типов данных, но я потратил два-три часа, чтобы выяснить, как получить доступ к этому значению.
Как мне получить доступ к этим значениям, соответствующим громкости, идентификатору и значению?
Задача ещё не решена.
Других решений пока нет …