【问题标题】:Getting rates from an array - json从数组中获取费率 - json
【发布时间】:2016-08-08 10:51:45
【问题描述】:

我正在尝试从这个website 获取费率。

所以我连接website = Faraday.get('https://bitpay.com/api/rates')).status == 200 然后尝试解析这个。

我得到的响应片段是:

 #<Faraday::Response:0x007fcf1ce25688
  @env=
  #<struct Faraday::Env
  method=:get,
  body=
  "[{\"code\":\"BTC\",\"name\":\"Bitcoin\",\"rate\":1},      {\"code\":\"USD\",\"name\":\"US Dollar\",\"rate\":586.66},{\"code\":\"EUR\",\"name\":\"Eurozone Euro\",\"rate\":528.991322},{\"code\":\"GBP\",\"name\":\"Pound Sterling\",\"rate\":449.441986},{\"code\":\"JPY\",\"name\":\"Japanese Yen\",\"rate\":59907.95922},{\"code\":\"CAD\",\"name\"

当我做一个 website.body 时,我会得到一个在该网站上找到的所有这些值的 String 类。我想解析它们(JSON?),以便我可以将每个速率作为浮点数。

我尝试了JSON.parse(website.body)["GBP"]["rate"].to_f,但它又不能在字符串中工作。

我得到的回报是TypeError: no implicit conversion of String into Integer

我从不同的费率网站获得了类似(但不相同)的格式,这就是我处理它的方式。我需要先更改其格式还是有不同的方法?

【问题讨论】:

    标签: arrays json ruby


    【解决方案1】:

    您正在尝试使用键 "GBP" 访问已解析的 JSON,但您有一个数组。就像你这样做了

    a = [1,2,3,4,5]
    a['foo']
    

    试试

    currencies = JSON.parse(website.body)
    currencies.each { |currency| puts currency['rate'] }
    

    并根据需要进行更改

    【讨论】:

      猜你喜欢
      • 2015-09-14
      • 1970-01-01
      • 1970-01-01
      • 2012-01-23
      • 1970-01-01
      • 1970-01-01
      • 2013-12-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多