Получение всего хэша по значению - 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" })
→ Ссылка