diff --git a/zkh-web/src/main/java/vip/jcfd/web/config/JacksonConfig.java b/zkh-web/src/main/java/vip/jcfd/web/config/JacksonConfig.java index d39fff7..7831c05 100644 --- a/zkh-web/src/main/java/vip/jcfd/web/config/JacksonConfig.java +++ b/zkh-web/src/main/java/vip/jcfd/web/config/JacksonConfig.java @@ -11,7 +11,10 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.io.IOException; +import java.time.LocalDate; +import java.time.LocalDateTime; import java.time.ZoneId; +import java.time.format.DateTimeFormatter; import java.util.Locale; import java.util.TimeZone; @@ -28,11 +31,85 @@ public class JacksonConfig { jacksonObjectMapperBuilder.locale(Locale.CHINA); jacksonObjectMapperBuilder.timeZone(TimeZone.getTimeZone(ZoneId.of("Asia/Shanghai"))); jacksonObjectMapperBuilder.simpleDateFormat("yyyy-MM-dd HH:mm:ss"); - jacksonObjectMapperBuilder.serializers(new LongSerializer()); - jacksonObjectMapperBuilder.deserializers(new LongDeserializer()); + jacksonObjectMapperBuilder.serializers(new LongSerializer(), new LocalDateTimeSerializer(), new LocalDateSerializer()); + jacksonObjectMapperBuilder.deserializers(new LongDeserializer(), new LocalDateTimeDeserializer(), new LocalDateDeserializer()); }; } + public static class LocalDateTimeSerializer extends JsonSerializer { + + private final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + @Override + public void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException { + if (value == null) { + gen.writeNull(); + return; + } + gen.writeString(value.format(formatter)); + } + + @Override + public Class handledType() { + return LocalDateTime.class; + } + } + + public static class LocalDateTimeDeserializer extends JsonDeserializer { + + private final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + @Override + public LocalDateTime deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { + if (p.getText() == null) { + return null; + } + return LocalDateTime.parse(p.getText(), formatter); + } + + @Override + public Class handledType() { + return LocalDateTime.class; + } + } + + public static class LocalDateSerializer extends JsonSerializer { + + private final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + + @Override + public void serialize(LocalDate value, JsonGenerator gen, SerializerProvider serializers) throws IOException { + if (value == null) { + gen.writeNull(); + return; + } + gen.writeString(value.format(formatter)); + } + + @Override + public Class handledType() { + return LocalDate.class; + } + } + + public static class LocalDateDeserializer extends JsonDeserializer { + + private final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + + @Override + public LocalDate deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { + if (p.getText() == null) { + return null; + } + return LocalDate.parse(p.getText(), formatter); + } + + @Override + public Class handledType() { + return LocalDate.class; + } + } + public static class LongSerializer extends JsonSerializer { @Override public void serialize(Long value, JsonGenerator gen, SerializerProvider serializers) throws IOException {