2009-05-05 1 views
13

ActiveRecord는 기본 JSON 출력 형식을 변경했습니다. 그것은 Ruby의 ActiveResource로 JSON 포맷을 사용하는 방법은 무엇입니까?

{ some_junk } 

ActiveResource 분명히 내가

을 방출하는 RESTful 웹 서비스를 사용하기 위해 필사적으로 노력하고

{ some_junk } 

으로 JSON을 소비 기대, 자신의 단서를 추적하고있다

{ "user": { 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 매우 형식에 구속력이 없습니다. 현재 does a check을 사용하고 있는지 확인하려면 XmlFormat을 사용하고 있는지 여부를 확인해야합니다.

자신의 형식 모듈 인 을 원숭이 패치 ActiveResource::Base으로 만들면 원하는 것을 얻을 수 있지만 거의 이상적이지 않습니다. 그래도 Base을 좀 더 포맷에 의존하지 않는 패치가 환영받을 것이라고 확신합니다.

0

사용자 정의 ActiveResource Formatter를 작성하는 방법을 설명하는 @vaskas의 블로그 게시물이 있습니다. 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