只需要重定义该对象的
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);
ruby to_yaml 筛选部分不参与序列化
时间: 2024-11-02 00:48:50