Skip to content

介绍

Jackson将对象json化的时候,可能会出现许多属性的值为null。

解决方案

我们可以配置ObjectMapper在序列化Java对象为JSON时,忽略值为null的属性。

ts

/**
 * mvc的全局处理
 */
@Configuration
public class GlobalConfig extends WebMvcConfigurationSupport {

    /**
     * 通过继承WebMvcConfigurationSupport并重写configureMessageConverters方法,
     * 实现了全局的HTTP消息转换器配置,简化了后续开发中对JSON处理的配置需求。
     * @param converters
     */
    @Override
    protected void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
            super.configureMessageConverters(converters);
            //MappingJackson2HttpMessageConverter添加到Spring MVC的消息转换器列表中,
            //确保在HTTP请求和响应中能够正确处理JSON数据。
        converters.add(mappingJackson2HttpMessageConverter());
    }

    private MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter(){
        ObjectMapper objectMapper = new ObjectMapper();
        //ObjectMapper被配置为在序列化空对象时,
        //不会抛出异常(FAIL_ON_EMPTY_BEANS设置为false),增强了系统的健壮性。
        objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
        //忽略所有待序列化对象的 Null 属性。
        objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(objectMapper);
        converter.setObjectMapper(objectMapper);
        return converter;
    }
}

相关文章

Jackson序列化(FAIL_ON_EMPTY_BEANS)

上次更新于: