我使用整数键在ruby中创建一个哈希并将其作为JSON响应发送.然后解析此JSON并将哈希转换回ruby.键现在是字符串文字.
我知道JSON不支持整数键但是我遇到了这个方法,它基本上解析了哈希,因此它有符号键.
JSON.parse(hash, {:symbolize_names => true})
Run Code Online (Sandbox Code Playgroud)
是否有类似的函数来获取原始整数键
a = {1 => 2}
a.keys
=> [1]
b = JSON.parse(JSON.generate(a))
b.keys
=> ["1"]
Run Code Online (Sandbox Code Playgroud)
我的哈希很复杂.值本身是一个应该有整数键的哈希值.有多个这样的嵌套级别
据我所知,JSON中没有任何内容,但转换很容易:
json_hash = {"1" => "2" }
integer_hash = Hash[json_hash.map{|k,v|[ k.to_i, v.to_i ]}]
=> {1 => 2}
Run Code Online (Sandbox Code Playgroud)
因此,我们从初始hash(json_hash)中获取所有键和值,在它们上调用to_i并在新的hash(integer_hash)中获取它们.
即使嵌套也不会阻塞.你可以在一个方法中做到这一点:
def to_integer_keys(hash)
keys_values = hash.map do |k,v|
if(v.kind_of? Hash)
new_value = to_integer_keys(v) #it's a hash, let's call it again
else
new_value = v.to_i #it's a integer, let's convert
end
[k.to_i, new_value]
end
Hash[keys_values]
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2469 次 |
| 最近记录: |