从JSON获取并添加值

时间:2014-04-14 17:17:33

标签: ruby-on-rails ruby json

这是我的哈希:

{"graph"=>[{"1"=>16, "2"=>44, "3"=>53, "4"=>53, "5"=>80, "6"=>71, "7"=>63, "8"=>54, "9"=>53, "10"=>44, "11"=>76, "12"=>82, "13"=>66, "14"=>59, "15"=>64, "16"=>39, "17"=>19, "18"=>14, "19"=>5, "20"=>6, "21"=>5, "22"=>7, "23"=>6, "24"=>7}]}

我正在尝试获取每个值并将它们添加到一起。长而不正确的方法是获取每个值并将它们加在一起如下:

first_number = json["graph"][0]["1"]
second_number = json["graph"][0]["2"]

如何简化此操作以获得总计数?

1 个答案:

答案 0 :(得分:6)

如果你需要的只是这些价值的总和......

json['graph'][0].values.inject{|sum,val| sum+val}

如果您使用的是rails,则可以选择使用sum方法:

json['graph'][0].values.sum

inject获取给定块并对Array中的每个元素执行一次块。 val是要评估的当前值,sum是最后从块返回的值。因此,如果每次块运行时添加两个并返回结果,您将在执行结束时得到值的总和。

您可以在此处查看文档:{​​{3}}