来自Ruby的String:Marshal.load? (从Rails production.log重新创建params哈希)

时间:2011-10-13 02:21:08

标签: ruby json parsing hash marshalling

我想解析Rails production.log文件并重新创建params Hash。我坚持使用Marshal.load方法,它实际上期望数据被编组。好吧,数据格式正确,但它是一个字符串,而不是Marshal预期的格式。

这是我从日志文件中请求退出的字符串:

{
 "location"=>{"city"=>"München \"foo \" bar", "id"=>"462", "youtube_tags"=>""},
 "authenticity_token"=>"UHi0GCNDBPN/Ms+0bqEOl4HGvUjDRw8tNvtqVl3v0dY=",
 "utf8"=>"\342\234\223", "textinput"=>""
}

我用

解决了这个问题
o=JSON.parse.gsub("=>",":"))

在这种情况下,我遇到了变音符号的问题。

是否无法使用Ruby 1.8.7将字符串中的哈希表示形式解析或加载到实际的Ruby Hash结构中?

1 个答案:

答案 0 :(得分:1)

这可能不是最好的方法,但是......

h = eval '{
            "location"=>{"city"=>"München", "id"=>"462", "youtube_tags"=>""},
            "authenticity_token"=>"UHi0GCNDBPN/Ms+0bqEOl4HGvUjDRw8tNvtqVl3v0dY=",
            "utf8"=>"\342\234\223", "textinput"=>""
          }'