【问题标题】:Spring Boot 1.5.4 Filter out null values in json responseSpring Boot 1.5.4 过滤掉json响应中的空值
【发布时间】:2017-07-31 18:47:47
【问题描述】:

我使用的是 Spring Boot 1.5.4 版本。我正在使用spring-ws getWebServiceTemplate() 进行网络服务调用。 SOAP 响应的字段有很多空值。

我正在尝试过滤掉 JSON 响应中的空值。以下方法似乎都不起作用:

  1. application.properties中设置属性:
spring.jackson.default-property-inclusion:NON_NULL`
  1. 使用Jackson2ObjectMapperBuilder在配置类中设置它:
@Bean
    public Jackson2ObjectMapperBuilder objectMapperBuilder() {
        Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();        
        builder.serializationInclusion(JsonInclude.Include.NON_NULL);
        builder.serializationInclusion(JsonInclude.Include.NON_EMPTY);
        return builder;
    } 

请指教。

lva

【问题讨论】:

    标签: spring-boot null


    【解决方案1】:

    我使用的是Spring Boot 1.5.6.RELEASE版本,可以参考 customize-the-jackson-objectmapper

    以下代码有效:

     @SpringBootApplication
        public class Application {
    
            @Bean
            public Jackson2ObjectMapperBuilder objectMapperBuilder() {
                Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
                builder.serializationInclusion(JsonInclude.Include.NON_NULL);
                return builder;
            }
    
            public static void main(String[] args) {
                SpringApplication.run(DbeeApiApplication.class, args);
            }
        }
    

    或者你可以从MappingJackson2HttpMessageConverter过滤,例如:

    @Configuration
    class WebMvcConfiguration extends WebMvcConfigurationSupport {
        @Override
        protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
            for(HttpMessageConverter<?> converter: converters) {
                if(converter instanceof MappingJackson2HttpMessageConverter) {
                    ObjectMapper mapper = ((MappingJackson2HttpMessageConverter)converter).getObjectMapper();
                    mapper.setSerializationInclusion(Include.NON_NULL);
                }
            }
        }
    }
    

    【讨论】:

    • 请对您的回答提供一些解释,说明它将如何解决问题。这也将有助于避免将来出现同样的问题。仅代码答案不受欢迎。
    【解决方案2】:

    在 application.properties 中使用以下内容有效。

    spring.jackson.default-property-inclusion=NON_NULL
    

    【讨论】:

    • 干净整洁的解决方案
    猜你喜欢
    • 2017-06-09
    • 2016-06-17
    • 1970-01-01
    • 2020-03-09
    • 2021-08-02
    • 2020-08-11
    • 2018-07-13
    • 1970-01-01
    • 2020-08-26
    相关资源
    最近更新 更多