【发布时间】:2011-12-16 11:33:02
【问题描述】:
我之前问过一个关于序列化和验证的问题。有人提到使用 JSON gem,它允许我告诉我的对象如何使用 to_json 方法进行序列化,但是 Ruby 似乎很容易做很多复杂的事情,但另一方面,一些非常简单的事情似乎很复杂,序列化就是其中之一。
我想知道是否有办法拥有一个干净的对象:
class CleanClass
attr_accessor :variable1
attr_accessor :variable2
attr_accessor :variable3
end
cleanObject = CleanClass.new
理想情况下,我不想弄脏模型,我只想将它传递给 something 并告诉它输出类型应该是什么,让它发挥它的魔力。
一个例子是这样的:
jsonOutput = MagicSerializer::Json.Serialize(cleanObject)
xmlOutput = MagicSerializer::Xml.Serialize(cleanObject)
yamlOutput = MagicSerializer::Yaml.Serialize(cleanObject)
revertedJsonObject = MagicSerializer::Json.Unserialize(jsonOutput)
revertedXmlObject = MagicSerializer::Xml.Unserialize(xmlOutput)
revertedYamlObject = MagicSerializer::Yaml.Unserialize(yamlOutput)
我想传递一个对象,并得到输出的字符串,然后能够将其转换回来。
我知道 ActiveModel 具有序列化功能,但我需要弄脏我的班级才能做到这一点,而且我不想尽可能更改模型。 ActiveSupport 似乎满足 JSON 标准,因为我可以调用它,它会接受一个对象并吐出 JSON,但我想支持其他类型。
任何进一步的信息都会很棒!
【问题讨论】:
-
JSON.dump(object)和JSON.parse(string)
标签: ruby xml json serialization yaml