2009-05-05 4 views
13

ActiveRecordはデフォルトのJSON出力形式に変更を導入しました。それは私がRubyのActiveResourceでJSONフォーマットを使用するにはどうすればいいですか?

を発するRESTfulなWebサービスを利用するために必死にしようとしていますActiveResourceが明らかに

{ some_junk } 

としてJSONを消費することを期待し、そのリードを踏襲している

{ "user": { some_junk } } 

から

{ some_junk } 

に行ってきました

{ "user": { some_junk } } 

ActiveResource :: Baseクラスにそうするよう指示する方法はありますか?ここに私のコードです。

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

更新:今のところ壊れたとして、誰かが答えを知っている場合を除き、私は、ActiveResourceをあきらめますよ。それはそのデータ形式に来るとき、その間に、私は

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! 

答えて

9

うん経由たかっGETを達成することができました、ActiveResourceは現在、少し柔軟性に欠けています。原則として

は、アイデアは、あなたが自分でカスタム形式のモジュールを書くことができている(例えばJsonWithRootFormat)、ActiveResource::Formats::JsonFormatモジュールに基づいて、その後、指定することをお使いのモデルでは、あなたのフォーマットとして:しかし

self.format = :json_with_root 

ActiveResource::Baseあまりフォーマットには無関係ではありません。XmlFormatを使用しているかどうかを確認するには現在does a checkです。存在している場合は、ルートノードのみが渡されます。

だからあなたがあなた自身のフォーマットモジュールを作ることによって欲しかったものを手に入れることができ、 猿パッチング ActiveResource::Baseを、それはほとんど理想的です。私は確かに、 Baseをもう少しフォーマットに無関係にするパッチが歓迎されるだろうと確信しています。

0

@vaskasさんのブログ記事で、独自のカスタムActiveResource Formatterの書き方を説明しています。 ActiveResourceコレクション

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

+0

サイトがダウンしているが、私は彼のgithubの上のポストを追跡(https://github.com/vaskas/vaskas.me/blob/master/blog/として

使用してハッシュ2012/02/07/using-hashes-as-activeresource-collections/index.html) - あなた自身のフォーマットオブジェクトを 'self.format'に割り当てることができます。新しいクラス 'include ActiveResource :: Formats :: JsonFormat'を作成し、独自の' decode'関数を定義します。 – phillmv

関連する問題