可能大家都知道,在Spring Boot的Restful API中,默认的Http返回数据格式为json。其基本原理是,当API返回对象或对象数组时,需对其进行serialize,此时默认会选择MappingJackson2HttpMessageConverter
[图片上传失败...(image-cf6741-1553933859386)]
有时项目会引入jackson的另一个序列化/反序列化依赖包:jackson-dataformat-xml,以便使用xml序列化与反序列化的一些功能。但此时该项目的Restful API将返回xml格式的http输出,而非json格式。如果前端项目基于http/json,势必会造成问题。如何解决这个问题?
在查阅一些资料之后,发现可以在Spring Boot项目中对HttpMessageConverter进行配置,指定使用的http返回格式。
在项目中添加一个WebConfig.java类,继承WebMvcConfigurerAdapter类,具体代码如下:
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(new **MappingJackson2HttpMessageConverter**());
}
}
注意需给该类加上@Configuration及@EnableWebMvc的annotation。
此处,如果希望对返回对象进行一些个性化的配置,可以添加一个返回bean - Jackson2ObjectMapperBuilder的方法。具体代码如下:
@Bean
public Jackson2ObjectMapperBuilder objectMapperBuilder(){
Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
builder.serializationInclusion(JsonInclude.Include.NON_NULL); // 仅包含非NULL属性
return builder;
}
注意需给该方法加上@Bean的annotation。