From 737c8e3c6b641666b17431f36ff3cad5dbfe4bfd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=B2=90?= Date: Tue, 21 Mar 2023 11:17:32 +0800 Subject: [PATCH] =?UTF-8?q?Jackson=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/common/config/JacksonConfig.java | 46 ++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 maku-framework/src/main/java/net/maku/framework/common/config/JacksonConfig.java diff --git a/maku-framework/src/main/java/net/maku/framework/common/config/JacksonConfig.java b/maku-framework/src/main/java/net/maku/framework/common/config/JacksonConfig.java new file mode 100644 index 0000000..689771b --- /dev/null +++ b/maku-framework/src/main/java/net/maku/framework/common/config/JacksonConfig.java @@ -0,0 +1,46 @@ +package net.maku.framework.common.config; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer; +import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; +import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer; +import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer; +import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; +import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer; +import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.Ordered; +import org.springframework.core.annotation.Order; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; + +@Configuration +public class JacksonConfig { + + @Bean + @Order(Ordered.HIGHEST_PRECEDENCE) + public Jackson2ObjectMapperBuilderCustomizer customJackson() { + return builder -> { + builder.serializerByType(LocalDateTime.class, + new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + builder.serializerByType(LocalDate.class, + new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); + builder.serializerByType(LocalTime.class, + new LocalTimeSerializer(DateTimeFormatter.ofPattern("HH:mm:ss"))); + builder.deserializerByType(LocalDateTime.class, + new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + builder.deserializerByType(LocalDate.class, + new LocalDateDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); + builder.deserializerByType(LocalTime.class, + new LocalTimeDeserializer(DateTimeFormatter.ofPattern("HH:mm:ss"))); + builder.serializationInclusion(JsonInclude.Include.NON_NULL); + builder.failOnUnknownProperties(false); + builder.featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); + }; + } +}