美文网首页IT@程序员猿媛程序员
Spring Boot Rest API的格式:json vs

Spring Boot Rest API的格式:json vs

作者: 杨梅泡酒 | 来源:发表于2019-03-30 16:20 被阅读7次

    可能大家都知道,在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。

    相关文章

      网友评论

        本文标题:Spring Boot Rest API的格式:json vs

        本文链接:https://www.haomeiwen.com/subject/qhhsbqtx.html