2012-05-29 80 views
0

我有一個變量。當我做puts var_name我得到這個散列:如何從JSON字符串訪問值?

"{\"numConnections\": 163}" 

但是當我嘗試它不工作的價值numConnections得到那個號碼163。下面是我想:

connections = temp_var["\"numConnections\""] 
puts connections.inspect 

或:

connections = temp_var["numConnections"] 
puts connections.inspect 

兩者同樣不工作。

任何想法如何從那裏提取163?

+0

這看起來不像一個散列,它看起來像一個字符串。什麼'var_name.class'返回? – Casper

+0

打印temp_var的類型,我確定它不是一個哈希,而是一個字符串。看起來像JSON對我? –

+0

嗯,我明白了....好點。是否有任何簡單的方法通過執行一些旨在處理json的函數來提取值? – GeekedOut

回答

2

如果你有一個JSON字符串,你需要將它解析成一個散列,然後才能用它來以類似散列的方式訪問它的鍵和值。考慮這個IRB會話:

1.9.3p194 :001 > require 'json' 
=> true 
1.9.3p194 :002 > temp_var = "{\"numConnections\": 163}" 
=> "{"numConnections": 163}" 
1.9.3p194 :003 > temp_var.class 
=> String 
1.9.3p194 :004 > JSON.parse(temp_var) 
=> {"numConnections"=>163} 
1.9.3p194 :005 > JSON.parse(temp_var)['numConnections'] 
=> 163