spring4和springboot过滤null属性或将null属性转为空字符串

spring4和springboot过滤null属性或将null属性转为空字符串

有资料显示可以在springboot提供的application.properties中配置 spring.jackson.default-property-inclusion=non_null 我试了下,并没有什么卵用。

作用范围Bean

1. @JsonInclude(JsonInclude.Include.NON_NULL)

作用范围整个工程

1
2
3
4
5
6
7
8
9
10
11
12
13
@Bean
public RequestMappingHandlerAdapter mappingHandlerAdapter() {
RequestMappingHandlerAdapter mappingHandlerAdapter = new RequestMappingHandlerAdapter();
mappingHandlerAdapter.setCustomArgumentResolvers(Arrays.asList(new XssHandlerMethodArgumentResolver()));
// null过滤
MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setDateFormat(new SimpleDateFormat(BaseEntity.DATE_TIME_FORMAT));
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
jackson2HttpMessageConverter.setObjectMapper(objectMapper);
mappingHandlerAdapter.setMessageConverters(Arrays.asList(jackson2HttpMessageConverter));
return mappingHandlerAdapter;
}

这种写法有个问题,会导致spring的Valid注解不起作用。无法使用验证框架,改进方式如下:

1
2
3
4
5
6
7
8
@Bean
public HttpMessageConverter messageConverter() {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setDateFormat(new SimpleDateFormat(BaseEntity.DATE_TIME_FORMAT));
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter(objectMapper);
return messageConverter;
}

spring4和springboot的null属性转为空字符串

1
2
3
4
5
6
7
8
9
10
11
12
13
@Bean
public HttpMessageConverter messageConverter() {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setDateFormat(new SimpleDateFormat(BaseEntity.DATE_TIME_FORMAT));
objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() {
@Override
public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException, JsonProcessingException {
gen.writeString("");
}
});
HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter(objectMapper);
return messageConverter;
}

以上,本人请测.