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"键.
方法如下:
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)