2014-01-17 109 views
0

我想提出一个API调用和接收以下回应(这是很长,所以我展示的重要组成部分):无法访问的Ruby Array和Hash值

... "fields":{"count"_1:["0"],"count_2":["5"]} ... 

当我这样做:

call["fields"]["count_1"] 

它返回

["0"] 

我需要它给我只是整数。我想:

call["fields"]["count_1"][0] 

而且我也试过:

call["fields"]["count_1"][0].to_i 

我在Rails的运行这一点,它给我的错误:

undefined method `[]' for nil:NilClass 

但它不工作。

+0

如果它按照你声明的返回'[“0”]',那么添加'[0]'就可以正常工作。 – meagar

+1

结果应该是什么? –

+0

@WayneConrad看看OP写了什么**我需要它给我一个整数。**'call [“fields”] [“count_1”] [0]'给出'“0”'。但他想要'0'。 –

回答

2

尝试如下使用String#to_i

call["fields"]["count_1"][0].to_i # => 0 
+0

我试过了。没有工作。很奇怪。似乎会。 – user2270029

+0

@ user2270029你想要什么结果..'0'或''0''? –

+0

我想要的结果只是整数,所以0 – user2270029

2

一些提示:

  1. 尝试包裹在JSON.parse(...) API响应。也就是说,如果你没有通过已经做到这一点的宝石进行通话。这可能是require 'json'

  2. 尝试call['fields']['count_1'].first.to_i

  3. 做一些调试:检查call.classcall['fields'].classcall['fields']['count_1'].class值。最后一个应该是Array

  4. 添加if子句来检查call['fields'][['count_1'].is_empty?

  5. 查找错别字:)

+0

这很奇怪,因为这个代码在另一个页面上工作。我真的复制并粘贴它来检查它。 – user2270029

0

出于某种原因,API调用使得零点零而不是零。感谢你的帮助。