使用json spirit在C ++中读取Value对象的名称和值

时间:2017-03-17 04:01:28

标签: c++ json json-spirit

我有一个文本文件,其中包含以JSON格式编写的数据。 数据看起来像这样 -

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

在提到thisthis

之后

我已经达到了可以读取以下数据结构的“名称”字段的程度。 抛开所有其他事情,我读取此对象的代码如下所示 -

// 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_;似乎造成了很多问题。 我无法弄清楚这个对象的数据类型是什么。 到目前为止,我已经尝试过:

  1. 读入整数。我以为因为卷有一个整数值
  2.   

    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> > >'
    
    1. 读入一个字符串,以便打印出来。
    2.   

      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对应的这些值?

0 个答案:

没有答案