2016-12-04 44 views
1

我試圖從雅虎拉取JSON以獲得美元兌瑞典克朗的轉換率。但是,我似乎無法將JSON轉換爲散列,它顯示「查詢」是自JSON作爲一個字符串以來唯一的鍵。JSON字符串通過網絡/ http拉到哈希

的JSON請求返回:

{"query":{"count":1,"created":"2016-12-04T13:06:00Z","lang":"en-us","results":{"rate":{"id":"USDSEK","Name":"USD/SEK","Rate":"9.1900","Date":"12/2/2016","Time":"9:59pm","Ask":"9.2000","Bid":"9.1900"}}}} 

我的代碼如下:

require 'net/http' 
require 'json' 

url = 'https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.xchange%20where%20pair%20in%20(%22USDSEK%22)&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=' 

uri = URI(url) 
response = Net::HTTP.get(uri) 
json_hash= JSON.parse(response) 

puts json_hash["Rate"] 

賣出期權語句返回 '零'

我試着從以下一個this site例如,但是我不會根據靜態輸入數據時的方式得到相同的結果。 *注意我沒有使用'ostruct',只是簡單地使用json。

謝謝你的任何見解。

回答

1

正如你所看到的,你正在尋找的領域是一個內部散列。嘗試

puts json_hash["query"]["results"]["rate"]["Rate"] 
+0

這工作完美,謝謝! –

1

你檢查你的json的結構嗎?

{ 
    "query": { 
     "count": 1, 
     "created": "2016-12-04T13:06:00Z", 
     "lang": "en-us", 
     "results": { 
      "rate": { 
       "id": "USDSEK", 
       "Name": "USD/SEK", 
       "Rate": "9.1900", 
       "Date": "12/2/2016", 
       "Time": "9:59pm", 
       "Ask": "9.2000", 
       "Bid": "9.1900" 
      } 
     } 
    } 
} 

,以獲取rate鍵,你應該這樣做:

json_hash["query"]["results"]["rate"] 

相比之下,與JSON以上明白你的問題。