deep_symbolize_keys!
将字符串键转换为symbol
键。这适用于散列和所有子散列。但是,我有这样的数据:
arr = [
{'name': 'pratha', 'email': 'p@g.com', 'sub': { 'id': 1 } },
{'name': 'john', 'email': 'c@d.com', 'sub': { 'id': 2 } }
]
arr.deep_symbolize_keys! # this is not working for array of hashes.
在这种情况下,哈希位于数组中。那么我怎么能一次象征一切呢?
使用Ruby 2.6.3
我还在某处读到这是deprecated
(可能在一个Rails论坛上)。真的吗?如果是这样,在我的情况下,将键转换为符号的最佳方法是什么?
当前正在使用:
def process(emails)
blacklist = ["a", "john", "c"]
e = emails.map do |hash|
blacklist.include?(hash['name']) ? nil : hash.deep_symbolize_keys!
end
e
end
答案 0 :(得分:1)
您需要副本还是就地转换?就地可以使用arr.each(&:deep_symbolize_keys!)
。对于副本,您应该使用arr.map(&:deep_symbolize_keys)
。请记住,地图不会突变,但会返回一个新数组。