Получение всего хэша по значению - RUBY + JSON
Доброе время суток. Хочу получить весь хэш только по значению из JSON файла. Пример:
{
"company": {
"employee": {
"first_employee": {
"id": 1,
"position": "farmer",
"age": 25,
"name": "Michael"
},
"second_employee": {
"id": 2,
"position": "builder",
"age": 29,
"name": "Steve"
}
}
}
}
Код:
require "json"
file = File.read("example.json")
data_hash = JSON.parse(file)
#Далее пример (Псевдокод):
p data_hash["position" = "farmer"]
#Должно выдать:
"first_employee": {
"id": 1,
"position": "farmer",
"age": 25,
"name": "Michael"
}
Заранее благодарю.
Ответы (1 шт):
Автор решения: Ainar-G
→ Ссылка
Как-то так. Обработку ошибок и спуск по массивам оставляю в качестве упражнения для читателя :-)
def find_in_hash(hash, &pred)
return hash if pred.call(hash)
hash.each do |_, v|
next unless v.is_a?(Hash)
found = find_in_hash(v, &pred)
return found if found
end
nil
end
p(find_in_hash(h) { |h| h["position"] == "farmer" })