ruby - 从JSON字符串中获取特定键的所有值

时间:2014-08-04 20:49:37

标签: ruby json

这是非常直接的确定,但我现在感觉脑力不足,并且无法解决这个问题....

我有这个JSON响应,只想获取密钥"价格"的所有值,并将它们全部转储到一个数组中,这样我就可以得到它们的平均值。

{
  "status": "success",
  "data": {
    "network": "DOGE",
    "prices": [
      {
        "price": "0.00028055",
        "price_base": "USD",
        "exchange": "bter",
        "time": 1407184167
      },
      {
        "price": "0.00022007",
        "price_base": "USD",
        "exchange": "cryptsy",
        "time": 1407184159
      }
    ]
  }
}

到目前为止,这是我的代码:

data = ActiveSupport::JSON.decode(response)
        status = data["status"]
        if status == "success"
          total = ......what do i need to do here?...
       end
提前谢谢 :)

1 个答案:

答案 0 :(得分:1)

How to sum array of numbers in Ruby?

除了你产生哈希,而不是数字。所以你钻进去了。

由于值是字符串,你必须将它们转换为浮点数来进行数学运算。

total = data["data"]["prices"].reduce(0.0) do |sum, hash|
  sum + hash["price"].to_f
end

出于好奇,你是怎么被困的?您理解中的逻辑差距是什么阻碍了您找到解决方案?