У меня одна проблема с Spring MVC и его поддержкой json.Я делаю один вызов ajax, чтобы получить некоторые данные, и я хочу получить эти данные в формате json, включая корневое значение.Я также использую аннотации JABX
в сущностях, потому что они используются для некоторых REST API
.
. Я прочитал, что для получения корневого значения, включенного в Jackson
, я должен использовать этот метод:
this.configure(org.codehaus.jackson.map.DeserializationConfig.Feature.UNWRAP_ROOT_VALUE, true);
Итак, я создал один объектMapper, который расширяет кодовый блок и выглядит следующим образом:
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);
}
}
Для Spring, чтобы использовать этот картограф, я настроил следующие строки:
<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 Issuers в браузер, он не включает корневой элемент collection
.
Есть идеи, как решить эту проблему?
Спасибо!