2011-11-01 114 views
105

我有一個JSON對象持有以下值:轉換JSON紅寶石哈希

@value = {"val":"test","val1":"test1","val2":"test2"} 

我想通過它循環在Ruby中獲得的鍵值對。當我使用@each,它不通過對象迭代,因爲它不是在Ruby的散列形式:

@value = {"val"=>"test","val1"=>"test1","val2"=>"test2"} 

如何我上面的JSON對象轉換爲Ruby的哈希?

回答

205

以下代碼段如何?

require 'json' 
value = '{"val":"test","val1":"test1","val2":"test2"}' 
puts JSON.parse(value) # => {"val"=>"test","val1"=>"test1","val2"=>"test2"} 
+7

'值= '{ 「VAL」: 「測試」, 「VAL1」: 「測試1」, 「val2的」: 「TEST2」}''本來更可讀的。 – luckykrrish

2

您嘗試過:http://flori.github.com/json/

如果沒有,你可以解析它?如果它只是你感興趣的數組,那麼分割上面的東西將非常簡單。 N

3

假設你有一個JSON哈希遊逛的地方,將自動轉換成類似WarHog的版本,在%Q {} HSH標籤包裝你的JSON哈希內容。這似乎會自動添加所有必要的轉義文本,如WarHog的回答

6

您也可以使用ruby的方法:with_indifferent_access,以便您可以使用符號或字符串訪問主體。

value = '{"val":"test","val1":"test1","val2":"test2"}' 
json = JSON.parse(value).with_indifferent_access 

然後

json[:val] #=> "test" 

json["val"] #=> "test"