2012-02-28 6 views
1

현재 잘 작동하는 application/xml 및 application/json을 지원하는 스프링 웹 서비스를 사용하고 있습니다. 새로운 서비스는 XML 문자열을 반환해야합니다. 문자열은 XML로 유지되어야하지만 application/json이 문자열의 내용을 serialize하는 것으로 나타났습니다. 이것을 막을 수있는 방법이 있습니까?Spring REST 3 및 JSON 용 JacksonMapper

편집 : 위부터

//dto: 
@XmlRootElement(name="mydata") 
public class MyData { 
    private String someData; 
    @XmlElement(required = true) 
    private String content; 
    @XmlElement 
    public String getSomeData(){ 
     return someData; 
    } 
    public String getContent() { 
     return content; 
} 
    //setter and other fields... 
} 

는 내용 필드 내 클래스에서 XML 문자열입니다. 내용 필드가 반환되지만 직렬화되지는 않았 으면합니다. 이것이 가능한가 ?

+0

당신은 '반환하지만 직렬화하지'정확히 무엇을 의미합니까? 컨트롤러에서 가져 오려는 샘플 출력 (내용 유형 포함)을 표시 할 수 있습니까? –

+0

@ Adam Jurczyk. "content"문자열은 현재 JSON으로 변환 된 XML 문자열을 포함합니다. 문자열을 XML 형식으로 유지하고 싶습니다. – user815809

+0

이것은 이상하다. ^^ 전체적으로 "MyData"는 XML로 직렬화되었지만 (XML로 직렬화 된) 컨텐츠는 JSON으로 변환된다고 할 수 있을까? –

답변

0

당신이 XML을 반환 할 경우, 서비스에이 주석을 추가 :이 캐릭터 라인이 (단지 @ResponseBody와 JSON 같은) 단지 직렬화 된 객체 인 경우는 jackson-jaxrs LIB 마킹 필요한 모든 것을보다

@RequestMapping(method = RequestMethod.POST, value = "xyz", headers = "Accept=application/xml") 
+0

감사합니다. 제 질문은 이해하기가 더 어려울 수 있습니다. XML을 항상 반환하고 싶지는 않습니다. 반환 된 객체의 한 필드 만 XML로 제한하려고합니다. 반영하도록 수정 된 질문. – user815809

+0

변환을 원하지 않는 필드에 setter 및 getter 메서드를 사용하지 마십시오. 내게 효과적입니다. –

+0

자, 질문이 있습니다. 나는 두 가지 버전의 데이터를 모두 반환 할 수는 없다고 생각합니다. –

0

javax.xml.bind.annotation.* 주석과 콩을 반환 :

//in controller: 
@RequestMapping 
public @ResponseBody MyData getMyData(){ 
    MyData md = new MyData(); 
    //... 
    return md; 
} 

//dto: 
@XmlRootElement(name="mydata") 
public class MyData { 
    private String someData; 
    @XmlElement 
    public String getSomeData(){ 
     return someData; 
    } 
    //setter and other fields... 
} 
+0

감사합니다. 나는 당신이 달성하고자하는 것을 반영하기 위해 샘플 코드로 주요 질문을 편집했다. – user815809

관련 문제