自定義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 裏的