2012-05-29 64 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