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

回到顶部