Сериализация объекта в JSON, XML, YAML?

Я задал предыдущий вопрос о сериализации и валидации.Кто-то упомянул об использовании гема JSON, который позволяет мне сообщить моему объекту, как сериализовать его с помощью метода 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, но я хотел бы поддерживать другие типы.

Было бы здорово получить любую дополнительную информацию!

7
задан the Tin Man 11 March 2014 в 20:58
поделиться