如何使用ruby的ActiveResource来使用JSON格式?

时间:2009-05-05 20:06:03

标签: ruby json rest activeresource

ActiveRecord引入了对其默认JSON输出格式的更改。它来自

{ "user": { some_junk } }

{ some_junk }

ActiveResource显然已经跟随他们的领先优势,希望将JSON视为

{ some_junk }

我正在拼命地使用一个发出

的RESTful Web服务
{ "user": { some_junk } }

有没有办法告诉我的ActiveResource :: Base类这样做?这是我的代码。

class User < ActiveResource::Base
    self.site = "http://example.com/"
    self.format = :json
end

更新:我现在放弃了ActiveResource,除非有人知道答案;与此同时,我能够通过

实现我想要的GET
require 'httparty' # sudo gem install httparty
result = HTTParty.get('http://foo.com/bar.json', headers => { "Foo" => "Bar"})
# result is a hash created from the JSON -- sweet!

2 个答案:

答案 0 :(得分:10)

是的,ActiveResource目前在数据格式方面有点不灵活。

原则上,您可以根据ActiveResource::Formats::JsonFormat模块自己编写一个自定义格式模块(例如JsonWithRootFormat),然后在模型中指定它作为您的格式:

self.format = :json_with_root

但是,ActiveResource::Base与格式无关 - 它目前does a check看你是否正在使用XmlFormat,并且只有你通过根节点才能通过。

所以你可以通过制作自己的格式模块猴子修补ActiveResource::Base来获得你想要的东西,但这并不理想。我肯定会欢迎使Base格式无关的补丁受到欢迎。

答案 1 :(得分:0)

以下是@vaskas撰写自定义ActiveResource格式化程序的好文章。

将Hashes用作ActiveResource集合

http://vaskas.me/blog/2012/02/07/using-hashes-as-activeresource-collections/