自定义messageConverter
@Configuration
public class WebConfiguration implements WebMvcConfigurer {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
converter.setObjectMapper(objectMapper);
objectMapper.getSerializerProvider().setNullValueSerializer(new NullJsonSerializer());
converters.add(0, converter);
}
}
public class NullJsonSerializer extends JsonSerializer<Object> {
@Override
public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
jsonGenerator.writeString(StringUtils.EMPTY);
}
}
注意事项
- 建议是用implement WebMvcConfigurer 的方式,不要使用 extend WebMvcConfigurationSupport + @EnableWebMvc ,因为@EnableWebMvc 是全权负责Springboot的自动配置,搞不好,启动项目后一顿错
- MessageConverter 记得要排在spring boot 的converter 的同类型的前面,否则放在最后,无法生效
- 如果某特殊的Date的格式化不按照 yyyy-MM-dd HH:mm:ss 的方式,可以在字段上,或者 get方法上,追加@JsonFormat ,注意是com.fasterxml.jackson.annotation 里的