2011-02-01 113 views
3

我正在寻找一种方法来从它的xml/json表示序列化/取消对象。Ruby(库)中的XML和JSON的对象序列化和反序列化?

我不关心xml命名空间。

是否有红宝石什么,让我做的事情:

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背景的,我找的一些东西,让我消耗从RESTful Web服务/分派对象。

你如何在rails中使用webservices? (xml和json)。使用XPath /活动资源似乎有点太冗长(即使是净人)

使用Ruby 1.9.x的,因为你是使用Rails,Rails的Rails的3.X

感谢

回答

1

(通过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的的已知,如何序列化/反序列化它们。

我写了一篇关于serializing and deserializing objects in Ruby using JSON的文章。以下是有关serialization features of ActiveModel的文档。

+0

如何在导轨外使用它?我们需要消费一些不同的Web服务,并且想要反序列化对象的响应,以便我们可以轻松地操纵它们。 – 2011-02-01 08:40:22