新手问题 请教大家一个字符串转 hash 的问题

akmumu · September 13, 2014 · Last by kevinli replied at December 07, 2016 · 8505 hits

一个满足 hash 格式的字符串,比如 \"credentials\"=>{\"token\"=>\"F538FF45937887AF7246E50928E0961F1\", \"refresh_token\"=>\"6EC400DD7B547B401D29474EA68952145\", \"expires_at\"=>1418310654, \"expires\"=>true} 上面是一条字符串,传到 rails 里面,想处理一下,要先转成 hash 或者数组,这个怎么实现呢?

最近我也遇到有这个问题,上面的字符串本身是一个 ruby object 转化成字符串,那么久逆向思考,把字符串转换成 ruby object,我的解决方案是:

eval("\"credentials\"=>{\"token\"=>\"F538FF45937887AF7246E50928E0961F1\", \"refresh_token\"=>\"6EC400DD7B547B401D29474EA68952145\", \"expires_at\"=>1418310654, \"expires\"=>true}")

不知道社区还有没有更好的解决方案?

#1 楼 @ailen 我试了一下就是 ruby 的 eval 函数,好用,谢谢

查到一个这个方法,但貌似不好用 array = Array.new array = @text.split(/=>|,/) @test = array hash = Hash[*array]

这里最好不用 eval,eval is a devil!!!

@flowerwrong 那有没有更好的解决方案呢?

#7 楼 @badboy 就是使用 json 的 gem 么,我使用 ruby 哩的这个会失败,我那个不是个 json 形式的,是一个 hash 形式的字符串, 报错如下 JSON::ParserError: 757: unexpected token at

这头像太逼真了

#9 楼 @w7938940 顺便请教个问题,html.erb 里面用 ruby 中的实例化变量,会自动变成 htmlspecial,如何不变呢?就是<span 会变成'& l t;'

raw 或者 html_safe ?

#11 楼 @w7938940 多谢,我试试看

@akmumu 大哥,求你换个头像!!!!! 😢 😢 😢 😢 😢 😢

require 'rubygems'
require 'json'

content = %Q({\"credentials\"=>{\"token\"=>\"F538FF45937887AF7246E50928E0961F1\", \"refresh_token\"=>\"6EC400DD7B547B401D29474EA68952145\", \"expires_at\"=>1418310654, \"expires\"=>true}})

hash = JSON.parse content.gsub!('=>', ':')

puts hash.class
#=> Hash

叫我雷锋侠

#14 楼 @Victor 强大

2.1.2 :006 > p hash.class
Hash
 => Hash

你就是雷锋侠

#13 楼 @lgn21st 我觉得他这头像不如不换。。。我以为我屏幕上有苍蝇了!!摔啊

#16 楼 @Victor 诡异的是,我怎么看,都觉得苍蝇是真的,看起来特别立体。

#16 楼 @Victor #17 楼 @lgn21st 屏幕越好看起来越真实

原来差点被坑不是我一人啊,有意思 😄

哥们,你的头像还能换回来么?我还没看。好帖子

You need to Sign in before reply, if you don't have an account, please Sign up first.