在Ruby中,序列化和反序列化通常使用Marshal模块来实现。Marshal模块提供了一个简单的方式来将对象序列化为二进制数据,以便将其存储在文件中或通过网络传输。反序列化则是将二进制数据还原为原始对象。
以下是一个简单的示例:
# 序列化对象
data = { name: 'Alice', age: 30, city: 'New York' }
serialized_data = Marshal.dump(data)
# 将序列化的数据写入文件
File.open('data.txt', 'w') { |file| file.write(serialized_data) }
# 从文件中读取序列化数据并反序列化
serialized_data = File.read('data.txt')
data = Marshal.load(serialized_data)
puts data[:name] # 输出 "Alice"
puts data[:age] # 输出 30
puts data[:city] # 输出 "New York"
在上面的代码中,我们首先将一个Hash对象序列化为二进制数据,并将其写入文件中。然后我们从文件中读取数据,并使用Marshal.load方法将其反序列化为原始对象。
请注意,Marshal序列化的数据只能在Ruby之间进行传递,因为它使用Ruby的内部数据结构来表示对象。如果需要与其他语言交互,可以考虑使用JSON或YAML等通用的数据格式。