首页 > 代码库 > ruby to_yaml 筛选部分不参与序列化

ruby to_yaml 筛选部分不参与序列化

只需要重定义该对象的

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);