我使用Spring Java配置定义了两个这样的转换器。我总是得到一个XML响应,除非我指定了' Accept = applicaiton / json'在HTTP标头中。有没有办法将默认转换器设置为JSON而不是XML转换器。
@EnableWebMvc
@Configuration
@ComponentScan(basePackages = {"foo.bar"})
public class WebMvcConfig extends WebMvcConfigurerAdapter {
...
@Bean
public MappingJackson2HttpMessageConverter jsonConverter() {
MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter();
ObjectMapper objectMapper = new ObjectMapper();
jsonConverter.setObjectMapper(objectMapper);
return jsonConverter;
}
@Bean
public MappingJackson2XmlHttpMessageConverter xmlConverter() {
MappingJackson2XmlHttpMessageConverter xmlConverter = new MappingJackson2XmlHttpMessageConverter();
return xmlConverter;
}
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(jsonConverter());
converters.add(xmlConverter());
super.configureMessageConverters(converters);
}
这是我的控制器。
@RequestMapping(value = "/product")
public
@ResponseBody
BSONObject getProducts(@RequestParam String ids,
@RequestParam(required = false) String types) {
List<BSONObject> products = commonDataService.getData(ids, types);
return products;
}
答案 0 :(得分:1)
尝试以下配置,它会设置默认的内容协商策略(基于文章here):
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
configurer.defaultContentType(MediaType.APPLICATION_JSON);
}
}
另一种选择是提供指定内容格式的其他方法,如果Accept
标头不可行,则选项可以指定将作为json返回的扩展名/myuri/sample.json
。 / p>