【发布时间】:2013-08-13 05:45:08
【问题描述】:
我有一个类 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 对象转换为散列很容易,但它们可能会嵌套在我想要转储的实际散列中的任何级别,我宁愿不必进行搜索并替换。
【问题讨论】:
-
如果您显示示例代码、演示问题的示例 YAML 输出以及显示您希望其外观的示例输出,将会有所帮助。见sscce.org的“e”部分