2013-04-10 2 views
2

Я хочу преобразовать объект Ruby в JSON, а также преобразовать JSON в объект Ruby. Со всеми кодами, которые я видел, JSON преобразуется обратно в Hash (а не пользовательский объект Ruby). Может ли кто-нибудь сказать мне, как это можно достичь?Объект Ruby для JSON и обратно

+0

Дайте больше информации о том, что вы ищете. Какой пользовательский класс вы используете? Как создается json? Как выглядит ваш json? и т. д. –

+0

AFAICS, вы заинтересованы в преобразовании JSON в собственные объекты. Почему бы не использовать конструктор по умолчанию объекта _your_ для получения хеша в качестве параметра? – mudasobwa

+0

Любая промежуточная система, которая обрабатывала такой JSON, по крайней мере, должна была бы уважать формат (путем его сохранения) и может потребоваться полностью смоделировать (если это необходимо, например, для создания нового объекта для последующего хранения). Это легко, конечно, если JSON излучается и потребляется только одним и тем же кодом Ruby, но если это так, почему бы не использовать существующие схемы сохранения, такие как маршал или ActiveRecord? (На самом деле я не удивлюсь, если найду реализацию ActiveRecord, которая завершила сериализацию JSON для хранения). –

ответ

1

Преобразование из объекта в JSON является убыточным. На самом деле процесс сериализации не сохраняет класс.

Единственный способ восстановить это - передать имя класса в качестве атрибута в сериализованном JSON и указать процедуру десериализации для создания экземпляра этого класса.

В противном случае, если вы заранее знаете класс, вы просто добавляете возможность классу инициализировать новый объект из Hash.

Другой альтернативой является использование YAML, где сериализованный вывод также сохраняет имя исходного класса.

Смежные вопросы