Parcourir la source

add LocalDateTime serializer

UsagiHao il y a 5 ans
Parent
commit
7e421baf06

+ 19 - 0
judgement-client/src/main/java/cn/seecoder/judgement/utils/LocalDateTimeDeserializer.java

@@ -0,0 +1,19 @@
+package cn.seecoder.judgement.utils;
+
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.JsonDeserializer;
+
+import java.io.IOException;
+import java.time.LocalDateTime;
+import java.time.ZoneOffset;
+
+//时间戳反序列化时间
+public class LocalDateTimeDeserializer extends JsonDeserializer<LocalDateTime> {
+    @Override
+    public LocalDateTime deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+        Long timestamp = jsonParser.getLongValue();
+        return LocalDateTime.ofEpochSecond(timestamp / 1000, 0, ZoneOffset.ofHours(8));
+    }
+}

+ 17 - 0
judgement-client/src/main/java/cn/seecoder/judgement/utils/LocalDateTimeSerializer.java

@@ -0,0 +1,17 @@
+package cn.seecoder.judgement.utils;
+
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.databind.JsonSerializer;
+import com.fasterxml.jackson.databind.SerializerProvider;
+
+import java.io.IOException;
+import java.time.LocalDateTime;
+import java.time.ZoneOffset;
+
+//时间序列化时变为时间戳
+public class LocalDateTimeSerializer extends JsonSerializer<LocalDateTime> {
+    @Override
+    public void serialize(LocalDateTime localDateTime, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+        jsonGenerator.writeNumber(localDateTime.toInstant(ZoneOffset.ofHours(8)).toEpochMilli());
+    }
+}