在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等通用的數據格式。