JacksonConfig.java 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package com.aitori.config;
  2. import cn.hutool.core.date.DatePattern;
  3. import com.fasterxml.jackson.databind.SerializationFeature;
  4. import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
  5. import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
  6. import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
  7. import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
  8. import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
  9. import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
  10. import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
  11. import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
  12. import org.springframework.context.annotation.Bean;
  13. import org.springframework.context.annotation.Configuration;
  14. import java.time.LocalDate;
  15. import java.time.LocalDateTime;
  16. import java.time.LocalTime;
  17. import java.time.format.DateTimeFormatter;
  18. import java.util.TimeZone;
  19. @Configuration
  20. public class JacksonConfig {
  21. @Bean
  22. public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
  23. return builder -> {
  24. JavaTimeModule javaTimeModule = this.timeModule();
  25. builder.timeZone(TimeZone.getTimeZone("Asia/Tokyo"));
  26. builder.featuresToEnable(SerializationFeature.WRITE_ENUMS_USING_TO_STRING);
  27. builder.modules(javaTimeModule);
  28. };
  29. }
  30. private JavaTimeModule timeModule() {
  31. // 针对大数值的序列化处理
  32. JavaTimeModule javaTimeModule = new JavaTimeModule();
  33. DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN);
  34. javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(dateTimeFormatter));
  35. javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(dateTimeFormatter));
  36. DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN);
  37. javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer(dateFormatter));
  38. javaTimeModule.addDeserializer(LocalDate.class, new LocalDateDeserializer(dateFormatter));
  39. DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern(DatePattern.NORM_TIME_PATTERN);
  40. javaTimeModule.addSerializer(LocalTime.class, new LocalTimeSerializer(timeFormatter));
  41. javaTimeModule.addDeserializer(LocalTime.class, new LocalTimeDeserializer(timeFormatter));
  42. return javaTimeModule;
  43. }
  44. }