我有一个哈希,它有一个未知的集合和嵌套数组、哈希、哈希数组和字符串的混合。这是 的结果JSON.parse
。数据的结构必须与开始时相同。最终目标是将字符串转换为可能是 Fixnums 的 Fixnums。
以下工作正常,但我想知道它是否可以缩短。请注意我需要clean
方法中的键和值,因为并非所有可以作为 Fixnums 的字符串都应该是。有任何想法吗?
def clean_node(node)
if node.class == String
clean(node)
elsif node.class == Array
node.each_with_index do |obj, i|
if obj.class == String
node[i] = clean(node[i], obj)
else
clean_node(obj)
end
end
elsif node.class == Hash
node.each_pair do |key, value|
if value.class == String
node[key] = clean(key, value)
else
clean_node(value)
end
end
end
end
def clean(key, value)
FIXNUM_KEYS.include?(key)? value.to_i : value
end