|
@@ -1,9 +1,12 @@
|
|
package com.leromro.framework.config;
|
|
package com.leromro.framework.config;
|
|
|
|
|
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
|
+import com.fasterxml.jackson.core.JsonParser;
|
|
|
|
+import com.fasterxml.jackson.databind.DeserializationContext;
|
|
|
|
+import com.fasterxml.jackson.databind.JsonDeserializer;
|
|
import com.fasterxml.jackson.databind.deser.std.DateDeserializers;
|
|
import com.fasterxml.jackson.databind.deser.std.DateDeserializers;
|
|
import com.fasterxml.jackson.databind.ser.std.DateSerializer;
|
|
import com.fasterxml.jackson.databind.ser.std.DateSerializer;
|
|
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
|
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
|
-import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
|
|
|
|
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
|
|
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
|
|
import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
|
|
import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
|
|
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
|
|
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
|
|
@@ -15,6 +18,7 @@ import org.springframework.context.annotation.Bean;
|
|
import org.springframework.context.annotation.Configuration;
|
|
import org.springframework.context.annotation.Configuration;
|
|
import org.springframework.context.annotation.EnableAspectJAutoProxy;
|
|
import org.springframework.context.annotation.EnableAspectJAutoProxy;
|
|
|
|
|
|
|
|
+import java.io.IOException;
|
|
import java.text.SimpleDateFormat;
|
|
import java.text.SimpleDateFormat;
|
|
import java.time.LocalDate;
|
|
import java.time.LocalDate;
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
@@ -48,9 +52,28 @@ public class ApplicationConfig
|
|
.serializerByType(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")))
|
|
.serializerByType(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")))
|
|
.serializerByType(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")))
|
|
.serializerByType(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")))
|
|
.serializerByType(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern("HH:mm:ss")))
|
|
.serializerByType(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern("HH:mm:ss")))
|
|
-// .deserializerByType(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")))
|
|
|
|
.deserializerByType(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")))
|
|
.deserializerByType(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")))
|
|
.deserializerByType(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern("HH:mm:ss")))
|
|
.deserializerByType(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern("HH:mm:ss")))
|
|
- .deserializerByType(Date.class, new DateDeserializers.DateDeserializer(DateDeserializers.DateDeserializer.instance, new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"),"yyyy-MM-dd HH:mm:ss"));
|
|
|
|
|
|
+ .deserializerByType(Date.class, new DateDeserializers.DateDeserializer(DateDeserializers.DateDeserializer.instance, new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"),"yyyy-MM-dd HH:mm:ss"))
|
|
|
|
+ .deserializerByType(LocalDate.class, new JsonDeserializer() {
|
|
|
|
+ private final DateTimeFormatter isoFormatter = DateTimeFormatter.ISO_DATE_TIME;
|
|
|
|
+ private final DateTimeFormatter dateOnlyFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public LocalDate deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
|
|
|
|
+ String value = p.getValueAsString();
|
|
|
|
+ try {
|
|
|
|
+ if(StrUtil.isBlank(value)){
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+ // 尝试解析 ISO 格式(带时间部分)
|
|
|
|
+ return LocalDateTime.parse(value, isoFormatter).toLocalDate();
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ // 如果失败,尝试解析纯日期格式
|
|
|
|
+ return LocalDate.parse(value, dateOnlyFormatter);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
}
|
|
}
|
|
}
|
|
}
|