2011-02-01 118 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