2015-11-26 5 views
1

Это образец ответа хешей в рубине.Поиск вложенных хешей

Например: -

find abcd1234

должен дать мне

я смог найти, но это не обладающего достаточными

У меня есть ответ СТГ, как это и список продолжают идти разные но такая же структура

[ 
    { 
    "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" 
    } ......... 
] 

может кто-нибудь знать, как их схватить?

ответ

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

неопределенного метода 'provider_id', я не думаю, что мы можем сделать так: – Gandalf

+0

, чтобы вы на самом деле являлись массивом, содержащим хэш-объект или строку массива? Хэш –

+0

Это внутри массива STH как [{........} , {......} , .......... так далее .... ] – Gandalf

0

Поскольку элементы массива являются хешами, вы можете выбрать соответствующие, сопоставляя требуемую клавишу.

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

Смежные вопросы