java – 在Spring中添加Jaxb2消息转换器打破了Jackson2 json映射
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 在Spring中添加Jaxb2消息转换器打破了Jackson2 json映射,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2305字,纯文字阅读大概需要4分钟。
内容图文
![java – 在Spring中添加Jaxb2消息转换器打破了Jackson2 json映射](/upload/InfoBanner/zyjiaocheng/793/1c6cf7b6688e4448b7756f700cdba4e5.jpg)
我正在尝试这样做,所以我的Spring rest应用程序可以处理xml和json响应,但似乎添加Jaxb消息转换器已经破坏了我的json映射.
@Bean
public MappingJackson2HttpMessageConverter jsonConverter() {
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
SimpleModule simpleModule = new SimpleModule();
simpleModule.addSerializer(String.class, new StringSerializer());
ObjectMapper mapper = new ObjectMapper()
.registerModule(simpleModule);
converter.setObjectMapper(mapper);
return converter;
}
@Bean
public Jaxb2RootElementHttpMessageConverter jaxbConverter() {
return new Jaxb2RootElementHttpMessageConverter();
}
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(jsonConverter());
converters.add(jaxbConverter());
}
如果我在那里注释掉第二种和第三种方法,那么一切都会重新开始工作(当然除了xml映射!).但是,有了这些,我搞砸了一些东西,比如序列化List< String>结果在[APPLEORANGEBANANA]中,苹果,橙子和香蕉在列表中是单独的字符串.
如果我直接使用jackson对象映射器映射到json,它没有那个问题,但是使用@ResponseBody注释自动序列化为json我有这个问题.
有人有主意吗?
解决方法:
这就是我做到的.
@RequestMapping(method = RequestMethod.GET, value = "/accounts/{accountId}", produces = {APPLICATION_XML_VALUE, APPLICATION_JSON_VALUE})
@ResponseBody
@ResponseStatus(value = HttpStatus.OK)
public Account getAccount(@PathVariable String accountId) {
return new Account(); // populate Account VO and send
}
并在XML文件中
<mvc:annotation-driven content-negotiation-manager="contentNegotiationManager" >
<mvc:message-converters register-defaults="false">
<ref bean="xmlConverter"/>
<ref bean="jsonConverter"/>
</mvc:message-converters>
</mvc:annotation-driven>
<!-- XML MessageConverter -->
<bean id="xmlConverter" class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter">
<constructor-arg ref="jaxbMarshaller"/>
<property name="supportedMediaTypes" value="application/xml" />
</bean>
<!-- JSON MessageConverter -->
<bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
</bean>
<!-- JAXB Classes to be marshalled -->
<bean id="jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="packagesToScan">
<list>
<value>com.test.*</value>
<value>com.*.test</value>
</list>
</property>
</bean>
内容总结
以上是互联网集市为您收集整理的java – 在Spring中添加Jaxb2消息转换器打破了Jackson2 json映射全部内容,希望文章能够帮你解决java – 在Spring中添加Jaxb2消息转换器打破了Jackson2 json映射所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。