LocalDateTimeConfig.java 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package com.ydtech.config;
  2. import cn.hutool.core.util.StrUtil;
  3. import com.fasterxml.jackson.core.JsonParser;
  4. import com.fasterxml.jackson.databind.DeserializationContext;
  5. import com.fasterxml.jackson.databind.deser.std.StdScalarDeserializer;
  6. import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
  7. import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
  8. import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
  9. import org.springframework.context.annotation.Bean;
  10. import org.springframework.context.annotation.Configuration;
  11. import org.springframework.util.StringUtils;
  12. import java.io.IOException;
  13. import java.time.LocalDateTime;
  14. import java.time.format.DateTimeFormatter;
  15. /**
  16. * @author wenks
  17. * @version 0.0.2
  18. * @description LocalDateTime 全局配置
  19. * @date 2023/5/17 17:50
  20. */
  21. @Configuration
  22. public class LocalDateTimeConfig {
  23. private static final DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
  24. /**
  25. * 序列化内容
  26. * LocalDateTime -> String
  27. * 服务端返回给客户端内容
  28. */
  29. @Bean
  30. public LocalDateTimeSerializer localDateTimeSerializer() {
  31. return new LocalDateTimeSerializer(dateTimeFormatter);
  32. }
  33. /*
  34. * 反序列化内容
  35. * String -> LocalDateTime
  36. * 客户端传入服务端数据
  37. * */
  38. @Bean
  39. public LocalDateTimeDeserializer localDateTimeDeserializer() {
  40. return new LocalDateTimeDeserializer(dateTimeFormatter);
  41. }
  42. @Bean
  43. public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
  44. return builder -> {
  45. builder.serializerByType(LocalDateTime.class, localDateTimeSerializer());
  46. builder.deserializerByType(LocalDateTime.class, localDateTimeDeserializer());
  47. builder.deserializerByType(String.class,
  48. new StdScalarDeserializer<String>(String.class) {
  49. private static final long serialVersionUID = 8744775952505486332L;
  50. @Override
  51. public String deserialize(JsonParser jsonParser, DeserializationContext ctx) throws IOException {
  52. String res = StringUtils.trimWhitespace(jsonParser.getValueAsString());
  53. return StrUtil.isBlank(res) ? null : res;
  54. }
  55. });
  56. };
  57. }
  58. }