Gro*_*fit 7 ruby xml serialization json yaml
我问了一个关于序列化和验证的先前问题.有人提到使用JSON gem,它允许我告诉我的对象如何使用该to_json方法进行序列化,但Ruby似乎很容易做很多复杂的事情,但另一方面,一些非常简单的东西似乎相当复杂,序列化是一个那些东西
我想知道是否有办法让一个干净的对象:
class CleanClass
attr_accessor :variable1
attr_accessor :variable2
attr_accessor :variable3
end
cleanObject = CleanClass.new
Run Code Online (Sandbox Code Playgroud)
理想情况下,我不想弄脏模型,我只想将它传递给某些东西并告诉它输出类型应该是什么并让它发挥其魔力.
一个例子是:
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)
Run Code Online (Sandbox Code Playgroud)
我想传递一个对象,并获得输出的字符串,然后能够将其转换回来.
我知道ActiveModel具有序列化功能,但是我需要弄脏我的类来执行此操作,并且如果可能的话我不想更改模型.ActiveSupport似乎满足JSON标准,因为我可以调用它,它将需要一个对象并吐出JSON,但我想支持其他类型.
任何进一步的信息都会很棒!
Ewo*_*out 13
Ruby内置了二进制和yaml的自动序列化/反序列化.
YAML:
require 'yaml'
serialized = CleanClass.new.to_yaml
object = YAML.load(serialized)
Run Code Online (Sandbox Code Playgroud)
元帅:
serialized = Marshal.dump(CleanClass.new)
object = Marshal.load(serialized)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8980 次 |
| 最近记录: |