我之前问过有关序列化和验证的问题。有人提到使用 JSON gem,它允许我告诉我的对象如何使用to_json
方法,然而 Ruby 似乎很容易做很多复杂的事情,但另一方面,一些非常简单的事情似乎相当复杂,序列化就是其中之一。
我想知道是否有办法获得干净的对象:
class CleanClass
attr_accessor :variable1
attr_accessor :variable2
attr_accessor :variable3
end
cleanObject = CleanClass.new
理想情况下,我不想弄脏模型,我只想将它传递给某物并告诉它输出类型应该是什么,并让它发挥其魔力。
一个例子是这样的:
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,但我想支持其他类型。
任何进一步的信息都会很棒!
Ruby 内置了对二进制和 yaml 的自动序列化/反序列化。
Yaml:
require 'yaml'
serialized = CleanClass.new.to_yaml
object = YAML.load(serialized)
Marshal:
serialized = Marshal.dump(CleanClass.new)
object = Marshal.load(serialized)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)