{ :b2 => "c2"}, :a3 => { :b3 => "c3"-6ren">
gpt4 book ai didi

ruby - 如何递归地将作为符号的 Ruby Hashes 的键转换为 String

转载 作者:太空宇宙 更新时间:2023-11-03 17:06:40 24 4
gpt4 key购买 nike

假设我有以下散列或嵌套散列:

h = { :a1 => { :b1 => "c1" },
:a2 => { :b2 => "c2"},
:a3 => { :b3 => "c3"} }

我想创建一个方法,将哈希作为参数并递归地将所有键(是符号的键,例如 :a1)转换为字符串(例如,"a1")。到目前为止,我想出了以下不起作用并返回的方法 {"a1"=>{:b1=>"c1"}, "a2"=>{:b2=>"c2"} , "a3"=>{:b3=>"c3"}}.:

def stringify_all_keys(hash)
stringified_hash = {}
hash.each do |k, v|
stringified_hash[k.to_s] = v
if v.class == Hash
stringify_all_keys(stringified_hash[k.to_s])
end
end
stringified_hash
end

我做错了什么以及如何将所有键都转换为这样的字符串:

{"a1"=>{"b1"=>"c1"}, "a2"=>{"b2"=>"c2"}, "a3"=>{"b3"=>"c3"}}

最佳答案

如果您使用 ActiveSupport已经或准备使用它,然后 deep_stringify_keys正是您要找的。

hash = { person: { name: 'Rob', age: '28' } }

hash.deep_stringify_keys
# => {"person"=>{"name"=>"Rob", "age"=>"28"}}

关于ruby - 如何递归地将作为符号的 Ruby Hashes 的键转换为 String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39240219/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com