一个满足 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}")
不知道社区还有没有更好的解决方案?
查到一个这个方法,但貌似不好用 array = Array.new array = @text.split(/=>|,/) @test = array hash = Hash[*array]
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
叫我雷锋侠