我有一个Spring MVC及其json支持问题。我做了一个Ajax调用来获取一些数据,我想以包含根值的json格式获取这些数据。我也在实体中使用JABX
注释,因为这些注释用于某些REST API
。Spring MVC和Jackson映射不会返回json中的根元素
我已阅读,获得包含Jackson
根值,我应该用这个方法:
this.configure(org.codehaus.jackson.map.DeserializationConfig.Feature.UNWRAP_ROOT_VALUE, true);
所以我创建了一个objectMapper它扩展了Codehaus的一个,看起来像这样:
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对象的浏览器,它不包括collection
根元素。
任何想法如何解决这个问题?
谢谢!
http://stackoverflow.com/q/2435527/923560讨论了类似的挑战 – Abdull 2013-04-23 00:55:02
如果您能够解决这个问题,请让我们知道你做了什么! – Marco 2014-02-14 09:31:16