2014-01-17 59 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調用使得零點零而不是零。感謝你的幫助。