Spring Boot Rest API的格式:json vs xml

0.168字数 306阅读 229

可能大家都知道,在Spring Boot的Restful API中,默认的Http返回数据格式为json。其基本原理是,当API返回对象或对象数组时,需对其进行serialize,此时默认会选择MappingJackson2HttpMessageConverter

[图片上传失败...(image-cf6741-1553933859386)]

image.png

有时项目会引入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。

推荐阅读更多精彩内容