A web service is returning a hash that contains an unknown number of nested hashes, some of which contain an array, which in turn contains an unknown number of nested hashes
I use the following code
def search_hash(hash, key) return hash[key] if hash.assoc(key) hash.delete_if{|key, value| value.class != Hash} new_hash = Hash.new hash.each_value {|values| new_hash.merge!(values)} unless new_hash.empty? search_hash(new_hash, key) end end