搜索嵌套散列

搜索嵌套散列

问题描述:

这些是红宝石散列的样本响应。搜索嵌套散列

如: -

find abcd1234

应该给我

我能找到,但它不是sufficent

我喜欢这些和列表的......响应继续走下去不同值但结构相同

[ 
    { 
    "addon_service": { 
     "id": "-89ab-cdef-0123-456789abcdef", 
     "name": "heroku-postgresql" 
    }, 
    "config_vars": [ 
     "FOO", 
     "BAZ" 
    ], 
    "created_at": "2012-01-01T12:00:00Z", 
    "id": "-89ab-cdef-0123-456789abcdef", 
    "name": "acme-inc-primary-database", 
    "plan": { 
     "id": "-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/-89ab-cdef-0123-456789abcdef" 
    } ......... 
] 

任何人都可以知道如何抓住那些?

可以遍历所有的数组元素(散),并显示其内容,如果哈希满足您的要求:

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" 
+0

未定义的方法'provider_id'我不这么认为我们可以这样做 – Gandalf

+0

所以你的数据实际上是一个包含哈希对象或数组的字符串的数组? –

+0

它的散列阵列某物内部像 [{........ }, {......} , ..........等等.... ] – Gandalf

由于数组的元素是散列,所以可以通过匹配所需的键来选择合适的元素。

select {|app| app[:provider_id] == "abcd1234"} 

您是否知道一旦您选择了该元素将如何处理? 我认为你想要散列中的一些项目,但不是全部。 这可能是这样的:

select {|app| app[:provider_id] == "abcd1234"}.map {|app| app.select {|key, v| [:addon_service, :app].include?(key) } } 
+0

它返回空'[]' – Gandalf