2011-11-04 11 views
0

BootStrap 클래스에서 호출되는 JSON.registerObjectMarshaller() 메소드를 사용하여 Grails의 객체를 JSON에 마샬링하려고합니다.BootStrap의 registerObjectMarshaller()에서 요청 매개 변수에 액세스하기

내 개체 그래프에 여러 중첩 개체가 있습니다. 사용자 -> 주소 -> 전화 및 나는 각 개체에 대한 marshaller 있습니다.

나는 최상위 레벨 객체의 "얕은"버전 또는 "깊은"버전을 반환 할 수있는 시나리오가 있습니다. 얕은 요청의 경우, 주소 대신 필드를 반환하고 싶습니다. 깊은 버전의 경우 다른 객체 마샬 러가 평소와 같이 위임 할 수 있습니다.

요청에 전달 된 매개 변수의 값에 따라 얕은 대 얕은 비교를 수행하려고하지만 BootStrap 클래스의 registerObjectMarshaller() 메서드에서 요청 매개 변수에 액세스하는 방법을 알지 못합니다.

일단 이러한 매개 변수에 액세스 할 수있는 방법이 있으면 필요에 따라 조정할 수 있습니다.

모든 포인터가 크게 감사하겠습니다.

+0

감사합니다. 새로운 것을 배웠습니다 ... –

답변

0

한 번 XML에 대한 객체 마샬 러 접근법을 시도했지만 슬프게도 제대로 작동하지 않았습니다. 당신과 비슷하게, 나는 물건을 표현할 수있는 방법이 하나도 없습니다. 나는 둘 이상을 가지고 있지만 Object Marshallers는 사소한 일을하고 싶을 때만 갈 수있는 방법이라고 생각합니다. 더 필요한 것이 있으면 잊어 버리십시오. 전달하는 값을 기반으로 JSON을 생성하는 정적 메서드를 사용하여 서비스 또는 클래스를 만드는 것이 훨씬 쉽습니다.

JsonGroovyBuilder를 사용하여이를 구현 한 다음이를 문자열로 변환하고 멋진 http 헤더 또는 원하는 값으로 감쌀 수 있습니다. 필자의 경우이 코드는 XML과 유사하므로 JsonGroovyBuilder 또는 기타를 사용해야합니다. - 내가하는 것처럼 StringWriter를 사용할 필요가 없을 것입니다.

def writer = new StringWriter() 
    def xml = new MarkupBuilder(writer) 

    def retData = someService.doSomething() 

    def xmlGen = new XmlResponseGenerator(xml, retData) 
    render(contentType: 'text/xml', encoding: "UTF-8", text: writer.toString()) 
+0

그 좋은 정보, thats Krystian. 더 많은 융통성이 필요하다면 궁극적으로 그 길을가는 것처럼 보입니다 ... –

관련 문제