我有一个文本文件,其中包含以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;
但是这一行 - &gt; vo.value_;
似乎造成了很多问题。
我无法弄清楚这个对象的数据类型是什么。
到目前为止,我已经尝试过:
int i = vo.get_value&lt; int&gt;();
应该有效。但相反,它说
error: no member named 'get_value' in
'json_spirit::Pair_impl<json_spirit::Config_vector<std::__1::basic_string<char> > >'
string 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> >')
但是,我可以在循环中使用cout << vo.name_ << endl
打印出vo.name_。
这输出:
...
volume
id
value
volume
id
value
...
等等。
我知道这是由于数据类型不兼容,但我花了两三个小时现在无法弄清楚如何访问这个值。
如何访问与volume,id和value对应的这些值?