Marshal.load一个字符串

时间:2011-07-08 13:37:35

标签: ruby

我正在尝试从字符串反序列化哈希:

names = '{foo:"bar"}'
@names_hash = Marshal.load(names)

但是我得到了一个TypeError:

TypeError: incompatible marshal file format (can't be read)
    format version 4.8 required; 123.111 given

根据文档,Marshal.load应该接受一个String。为什么我收到错误?

1 个答案:

答案 0 :(得分:1)

这是IRB会话的输出:

irb(main):005:0> a = {"foo" => "bar"}
=> {"foo"=>"bar"}
irb(main):006:0> Marshal.dump(a)
=> "\004\b{\006\"\bfoo\"\bbar"

你所做的事情对我来说更像是JSON,而不是Marshaling。