我有一个类Foo
是Hash
.
class Foo < Hash
# whatever Foo-specific methods/etc
end
当我使用 YAML 将其转储到文件时,它会写有指示类的标签。
> f = Foo.new
> f[:bar] = "baz"
> puts YAML.dump(f)
--- !ruby/hash:Foo
:bar: baz
我希望它只是写成一个普通的旧哈希(不是!ruby/hash:Foo
)
> puts YAML.dump({bar:"baz"})
---
:bar: baz
...这样我的数据的消费者就不需要知道Foo
. 是否有一种魔术方法可以添加到我的类中以将其自身转换为序列化,或者是否有一个魔术选项可以传递给 YAML.dump?
当然,将一个Foo
对象转换为散列很容易,但它们可能会嵌套在我想要转储的实际散列中的任何级别,我宁愿不必进行搜索和替换。