这些是红宝石中哈希的样本响应。
例如: -
find abcd1234
应该给我
我能够找到,但这还不够
我有这样的反应和列表继续进行不同的值但相同的结构
[
{
"addon_service": {
"id": "01234567-89ab-cdef-0123-456789abcdef",
"name": "heroku-postgresql"
},
"config_vars": [
"FOO",
"BAZ"
],
"created_at": "2012-01-01T12:00:00Z",
"id": "01234567-89ab-cdef-0123-456789abcdef",
"name": "acme-inc-primary-database",
"plan": {
"id": "01234567-89ab-cdef-0123-456789abcdef",
"name": "heroku-postgresql:dev"
},
"app": {
"id"=>"342uo23iu4io23u4oi2u34",
"name"=>"heroku-staging"},
},
"provider_id": "abcd1234",
"updated_at": "2012-01-01T12:00:00Z",
"web_url": "https://postgres.heroku.com/databases/01234567-89ab-cdef-0123-456789abcdef"
} .........
]
任何人都知道如何抓住这些吗?
答案 0 :(得分:1)
如果哈希满足您的要求,您可以迭代所有数组元素(哈希)并显示其内容:
element_found = 0
YOUR_DATA.each do |element|
if element["provider_id"].match(/abcd1234/)
element_found += 1
puts "addon_service: #{element['addon_service']['name']}"
puts "app: #{element['app']['name']}"
end
end
if element_found == 0 puts "Sorry match didn't found"
答案 1 :(得分:0)
由于数组的元素是哈希值,您可以通过匹配所需的键来选择适当的键。
select {|app| app[:provider_id] == "abcd1234"}
一旦你选择了元素,你知道如何处理它吗? 我想你想要哈希中的一些项目,但不是全部。 这可能看起来像:
select {|app| app[:provider_id] == "abcd1234"}.map {|app| app.select {|key, v| [:addon_service, :app].include?(key) } }