加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

带有整数键的Ruby Hash更改为字符串键

发布时间:2020-12-17 03:29:10 所属栏目:百科 来源:网络整理
导读:我使用整数键在 ruby中创建一个哈希并将其作为 JSON响应发送.然后解析此 JSON并将哈希转换回ruby.键现在是字符串文字. 我知道JSON不支持整数键但是我遇到了这个方法,它基本上解析了哈希,因此它有符号键. JSON.parse(hash,{:symbolize_names = true}) 是否有
我使用整数键在 ruby中创建一个哈希并将其作为 JSON响应发送.然后解析此 JSON并将哈希转换回ruby.键现在是字符串文字.

我知道JSON不支持整数键但是我遇到了这个方法,它基本上解析了哈希,因此它有符号键.

JSON.parse(hash,{:symbolize_names => true})

是否有类似的函数来获取原始整数键

a = {1 => 2}
a.keys
=> [1]
b = JSON.parse(JSON.generate(a))
b.keys
=> ["1"]

我的哈希很复杂.值本身是一个应该有整数键的哈希值.有多个这样的嵌套级别

解决方法

据我所知 Nothing in JSON,但转换很容易:

json_hash = {"1" => "2" }
integer_hash = Hash[json_hash.map{|k,v|[ k.to_i,v.to_i ]}]
=> {1 => 2}

所以,我们采取所有的关键&来自初始哈希值(json_hash)的值,在它们上调用to_i并将它们放入新的哈希值(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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读