只需要重定义该对象的
to_yaml_properties 方法, 只返回要序列化的字段就可以了
class A
attr_reader :a
attr_reader :b
def initialize(x,y)
@a = x
@b = y
end
end
a = A.new(1,3)
p a.to_yaml # => "--- !ruby/object:A\na: 1\nb: 3\n"
class << a
def to_yaml_properties
properties = super
properties.delete(:@a)
return properties
end
end
p a.to_yaml # => "--- !ruby/object:A\nb: 3\n"
反序列化的方法是
obj = YAML.load(yaml);