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

Mic*_*ach 12 ruby rest json activeresource

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

{ "user": { some_junk } }
Run Code Online (Sandbox Code Playgroud)

{ some_junk }
Run Code Online (Sandbox Code Playgroud)

ActiveResource显然已经跟随他们的领先,期望消耗JSON

{ some_junk }
Run Code Online (Sandbox Code Playgroud)

我正在拼命地使用一个发出的RESTful Web服务

{ "user": { some_junk } }
Run Code Online (Sandbox Code Playgroud)

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

class User < ActiveResource::Base
    self.site = "http://example.com/"
    self.format = :json
end
Run Code Online (Sandbox Code Playgroud)

更新:我现在放弃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!
Run Code Online (Sandbox Code Playgroud)

小智 10

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

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

self.format = :json_with_root
Run Code Online (Sandbox Code Playgroud)

但是,ActiveResource::Base与格式无关 - 它目前正在检查您是否正在使用XmlFormat,并且只在您通过根节点时才通过.

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