2015-11-20 37 views
0

我有一個如下所示的json對象,它是輸入。Rails:提取json字段並將其轉換爲數組的最快函數

[ 
{"feild1":"val11","field2":"val12"}, 
{"feild1":"val21","field2":"val22"}, 
{"feild1":"val31","field2":"val32"} 
] 

我想在一個數組對象輸出僅feild1,如下:

array_for_feild_one = ["val11", "val21", "val31"] 

我知道我可以在整JSON對象循環,但我不明白這一點的JSON對象,當我最後使用循環時,鍵和值的用法是否沒有更好的方法?

到目前爲止,我已經試過這樣:

json_obj.each do |obj| 

    my_array << obj['field1'] 
end 

編輯:

完整代碼如下:

json_obj = JSON.parse('[ 
{"feild1":"val11","field2":"val12"}, 
{"feild1":"val21","field2":"val22"}, 
{"feild1":"val31","field2":"val32"} 
]') 
my_array = [] 
json_obj.each do |obj| 
     my_array << obj['field1'] 
end 
puts my_array.inspect 
+1

你可以嘗試爲'json_obj.collect {| A |一個[「feild1」]}' –

+0

謝謝,它的工作..任何更多的選擇? – user1735921

+0

是的,有許多迭代器可用於像'map'這樣的ruby,'collect'你也可以使用這個 –

回答

1

你可以嘗試以下使用紅寶石collect方法方式:

json_obj = JSON.parse('[ 
{"feild1":"val11","field2":"val12"}, 
{"feild1":"val21","field2":"val22"}, 
{"feild1":"val31","field2":"val32"} 
]') 
my_array = json_obj.collect{|a| a["feild1"]} 
puts my_array.inspect 
1

有你可以做它的一行代碼的替代方法;)

ActiveSupport::JSON.decode(your_json).map{|a| a["feild1"]} 
相關問題