Spring MVC 및 JSON 지원과 관련하여 하나의 문제가 있습니다. 하나의 아약스 호출을 만들어 일부 데이터를 얻었고이 데이터를 루트 값을 포함하여 json 형식으로 가져 오려고합니다. 엔티티에서 에 사용되기 때문에 엔티티에서 JABX
주석을 사용하고 있습니다.스프링 MVC와 Jackson 매핑이 json에서 루트 요소를 반환하지 않습니다.
public class JaxbJacksonObjectMapper extends ObjectMapper {
public JaxbJacksonObjectMapper() {
final AnnotationIntrospector introspector = new JaxbAnnotationIntrospector();
this.configure(org.codehaus.jackson.map.DeserializationConfig.Feature.UNWRAP_ROOT_VALUE, true);
super.getDeserializationConfig().withAnnotationIntrospector(introspector);
this.configure(org.codehaus.jackson.map.SerializationConfig.Feature.WRAP_ROOT_VALUE, true);
super.getSerializationConfig().withAnnotationIntrospector(introspector);
}
}
:
this.configure(org.codehaus.jackson.map.DeserializationConfig.Feature.UNWRAP_ROOT_VALUE, true);
그래서 나는 codehaus 하나를 확장하고 다음과 같습니다 하나 objectMapper을 만들어 :
내가 Jackson
에 포함 된 루트 값을 얻기 위해 그것을 읽고, 나는이 방법을 사용한다
스프링은이 매퍼를 사용하기 위해 다음과 같은 라인을 설정했다 :
<beans:bean id="customObjectMapper" class="com.test.package.config.JaxbJacksonObjectMapper" />
<beans:bean id="jsonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<beans:property name="objectMapper" ref="customObjectMapper" />
</beans:bean>
<beans:bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<beans:property name="messageConverters">
<beans:list>
<beans:ref bean="jsonMessageConverter"/>
</beans:list>
</beans:property>
</beans:bean>
그리고 내 실체는 다음과 같다 :
@XmlRootElement(name = "collection")
public class Issuers {
private List<Issuer> issuers;
}
문제는 Spring 3.1
가 브라우저에 발행을 JSON 객체를 반환 할 때이 collection
루트 요소를 포함하지 않습니다.
이 문제를 해결하는 방법에 대해 알고 싶습니다.
감사합니다.
http://stackoverflow.com/q/2435527/923560는 경우 비슷한 문제 – Abdull
에 대해 설명 이 문제를 해결할 수 있었는지 알려주세요. – Marco