Spring MVC:将默认响应格式从xml更改为json
我经历了其他类似的询问问题,但对我没有任何帮助。
作为响应: *
由于某些XML API,我不得不添加jackson-xml
<dependency> <groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
</dependency>
默认为“ 。
我想将 。
如文档中所述:
https://spring.io/blog/2013/05/11/content-negotiation-using-spring-
mvc
我实现了以下配置:
@Override public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
configurer.favorPathExtension(false).favorParameter(true).parameterName("mediaType").ignoreAcceptHeader(true)
.useJaf(false).defaultContentType(MediaType.APPLICATION_JSON)
.mediaType("xml", MediaType.APPLICATION_XML).mediaType("json", MediaType.APPLICATION_JSON);
}
如果我创建了,ignoreAcceptHeader(true)
则所有内容都是JSON,甚至XML API返回JSON。
如果ignoreAcceptHeader(false)
是则默认为XML。
我忘了提到我的API的样子:
@RequestMapping(value = "/getXml", method = RequestMethod.GET)public ResponseEntity<String> getXml( HttpServletRequest request)
throws JAXBException {
return returnXml();
}
我在这里很失落,我想要的只是Default(Without AcceptHeader)应该是JSON。(API以字符串形式返回XML)
并且,当定义了Accept Header:“ Application / xml”时,响应应为XML。
任何建议都会有很大帮助。
谢谢。
回答:
通常,如果要获取json响应,则需要一个jackson-databind模块:
<dependency> <groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${json-jackson-version}</version>
</dependency>
然后必须MappingJackson2HttpMessageConverter
在配置中定义一个:
@Configuration@EnableWebMvc
public class WebAppMainConfiguration extends WebMvcConfigurerAdapter {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(new MappingJackson2HttpMessageConverter());
[..]
super.configureMessageConverters(converters);
}
[...]
}
在您的情况下,您可以实现自己的AbstractGenericHttpMessageConverter,以便可以根据媒体类型在不同的具体转换器之间切换此转换器。
检查方法 AbstractGenericHttpMessageConverter#writeInternal(..)
以上是 Spring MVC:将默认响应格式从xml更改为json 的全部内容, 来源链接: utcz.com/qa/411315.html