Сериализация объектов и десериализация для XML и JSON в Ruby (библиотека)? - PullRequest
4 голосов
/ 01 февраля 2011

Я ищу способ сериализации / десериализации объекта из его представления xml / json.

Меня не интересуют пространства имен xml.

Есть ли в Ruby что-нибудь, что позволяет мнеделать:

class Person
   attr :name, true
   attr :age, true
   attr :sex, true
end

person_xml =
"<Person>
  <name>Some Name</name>
  <age>15</age>
  <sex>Male</male>
</Person>"

// and then do
p = person_xml.deserialize(Person.class)
// or something of that sort

Исходя из .Net фона, я ищу что-то, что позволяет мне потреблять / отправлять объекты из остальных веб-сервисов.

Как вы используете веб-сервисы в рельсах?(XML и JSON).Использование ресурса xpath / active кажется слишком многословным (даже для пользователя .Net)

Использование ruby ​​1.9.x, Rails 3.x

Спасибо

Ответы [ 2 ]

1 голос
/ 01 февраля 2011

Поскольку вы используете Rails, Rails (через ActiveSupport) уже предоставляет способ сериализации / десериализации объектов в YAML, XML и JSON.

Например

class Post
  attr_accessor :title
  attr_accessor :body
end

post = Post.new.tap do |p|
  p.title = "A title"
  p.body = "A body"
end

post.to_yaml
# => "--- !ruby/object:Post \nbody: A body\ntitle: A title\n"

post.to_json
# => => "{\"body\":\"A body\",\"title\":\"A title\"}"

Если вы используете модели ActiveRecord, то Rails знает, как их сериализовать / десериализовать.

Я написал статью о сериализации и десериализации объектов в Ruby с использованием JSON . Вот документация о функциях сериализации ActiveModel .

0 голосов
/ 03 февраля 2019

вы должны рассмотреть рев драгоценный камень

Rendering

song = Song.new(title: "Medicine Balls")
SongRepresenter.new(song).to_json #=> {"title":"Medicine Balls"}

Синтаксический

song = Song.new(title: "Medicine Balls")
SongRepresenter.new(song).from_json('{"title":"Linoleum"}')
song.title #=> Linoleum
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...