Iterate over a deeply nested level of hashes in Ruby

后端 未结 8 1734
眼角桃花
眼角桃花 2020-12-05 00:13

So I have a hash, and for each level of the hash, I want to store its key and value. The problem is, a value can be another hash array. Furthermore, that hash can contain ke

8条回答
  •  失恋的感觉
    2020-12-05 00:38

    This should do for JSON well. Minor enhancements to Mark's code where it converts everything to uppercase in a given hash:

    def capitalize_hash(myHash)
        myHash.each {|key, value|
            puts "isHash: #{value.is_a?(Hash)}: " + value.to_s
            value.is_a?(Hash) ? capitalize_hash(value) : ( value.is_a?(Array) ? (myHash[key] = capitalize_array(value)) : (myHash[key] = value.try(:upcase)))
        }
    end
    
    def capitalize_array(myArray)
        myArray.each {|value|
            puts "isHash: #{value.is_a?(Hash)}: " + value.to_s
            value.is_a?(Array) ? capitalize_array(value) : ( value.is_a?(Hash) ? capitalize_hash(value) : value.try(:upcase))
        }
    end
    

提交回复
热议问题