如何遍历JSON数组以获取键的值?

adb*_*ads 1 ruby arrays json ruby-on-rails

我有一个响应字符串,看起来像这样:

"[{\"id\":\"blahbla23sdlkjrwer2345\",\"name\":\"bar\"},{\"id\":\"aselrjdsfsomething\",\"name\":\"foo\"}]"
Run Code Online (Sandbox Code Playgroud)

然后我用了JSON.parse(response_above):

json_parse = JSON.parse(response_above)

=>[{"id"=>"blahbla23sdlkjrwer2345", "name"=>"bar"},
 {"id"=>"aselrjdsfsomething", "name"=>"foo"}]
Run Code Online (Sandbox Code Playgroud)

从这里我只想要名称并将它们放入一个数组中.我想出了如何获取名称但不知道如何将其构建为新数组.

要获得"foo"或"bar",我可以这样做:

json_parse[0].fetch("name")
=> "bar"

json_parse[1].fetch("name")
=> "foo"
Run Code Online (Sandbox Code Playgroud)

我不知道如何遍历数组来从JSON响应构建一个新数组,如:

new_array = ["foo", "bar"]
Run Code Online (Sandbox Code Playgroud)

JSON响应可以是动态的,有时我可能只有2个元素,有时我可以有10个元素.我不能硬编码一个值.我需要找到一种方法来遍历该数组,获取每个值的"name"键.

Ner*_*ian 6

方法如下:

2.1.3 :006 > require 'json'
 => true 
2.1.3 :007 > json = JSON.parse("[{\"id\":\"blahbla23sdlkjrwer2345\",\"name\":\"bar\"},{\"id\":\"aselrjdsfsomething\",\"name\":\"foo\"}]")
 => [{"id"=>"blahbla23sdlkjrwer2345", "name"=>"bar"}, {"id"=>"aselrjdsfsomething", "name"=>"foo"}] 
2.1.3 :008 > json.map { |entry| entry['name'] }
 => ["bar", "foo"] 
Run Code Online (Sandbox Code Playgroud)