如何序列化数组并反序列化

Kok*_*zzu 10 ruby serialization deserialization

如何序列化数组并从字符串反序列化?我尝试了下面的代码,但它并没有真正返回原始的整数数组,而是为了字符串数组.

 x = [1,2,3].join(',') # maybe this is not the correct way to serialize to string?
 => '1,2,3'

 x = x.split(',')
 => [ '1', '2', '3' ]
Run Code Online (Sandbox Code Playgroud)

有没有办法让它回到整数而没有.collect{ |x| x.to_i }

Gui*_*nal 31

标准方法是Marshal:

x = Marshal.dump([1, 2, 3])
#=> "\x04\b[\bi\x06i\ai\b"

Marshal.load(x)
#=> [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

但你也可以这样做JSON:

require 'json'

x = [1, 2, 3].to_json
#=> "[1,2,3]"

JSON::parse(x)
#=> [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

或者YAML:

require 'yaml'

x = [1, 2, 3].to_yaml
#=> "---\n- 1\n- 2\n- 3\n"

YAML.load(x)
#=> [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)