增加LocalTime 序列化啊
This commit is contained in:
parent
b8d26f83f2
commit
a725fd6c3b
|
@ -0,0 +1,34 @@
|
|||
package cn.iocoder.yudao.framework.common.util.json.databind;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonParser;
|
||||
import com.fasterxml.jackson.databind.DeserializationContext;
|
||||
import com.fasterxml.jackson.databind.JsonDeserializer;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalTime;
|
||||
import java.time.ZoneId;
|
||||
import java.time.ZonedDateTime;
|
||||
|
||||
/**
|
||||
* 基于时间戳的 LocalTime 反序列化器
|
||||
*
|
||||
* @author shixiaohe
|
||||
*/
|
||||
public class TimestampLocalTimeDeserializer extends JsonDeserializer<LocalTime> {
|
||||
|
||||
public static final TimestampLocalTimeDeserializer INSTANCE = new TimestampLocalTimeDeserializer();
|
||||
|
||||
@Override
|
||||
public LocalTime deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
|
||||
// 从时间戳转换为 Instant
|
||||
Instant instant = Instant.ofEpochMilli(p.getValueAsLong());
|
||||
|
||||
// 转换为 ZonedDateTime 或 LocalDateTime
|
||||
ZonedDateTime zonedDateTime = instant.atZone(ZoneId.systemDefault());
|
||||
|
||||
// 提取时间部分
|
||||
return zonedDateTime.toLocalTime();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
package cn.iocoder.yudao.framework.common.util.json.databind;
|
||||
|
||||
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.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
import java.time.ZoneId;
|
||||
|
||||
/**
|
||||
* 基于时间戳的 LocalTime 序列化器
|
||||
*
|
||||
* @author shixiaohe
|
||||
*/
|
||||
public class TimestampLocalTimeSerializer extends JsonSerializer<LocalTime> {
|
||||
|
||||
public static final TimestampLocalTimeSerializer INSTANCE = new TimestampLocalTimeSerializer();
|
||||
|
||||
@Override
|
||||
public void serialize(LocalTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
|
||||
// 获取当前日期
|
||||
LocalDate today = LocalDate.now();
|
||||
|
||||
// 将 LocalTime 和日期合并为 LocalDateTime
|
||||
LocalDateTime localDateTime = LocalDateTime.of(today, value);
|
||||
|
||||
// 转换为时间戳(毫秒)
|
||||
long timestamp = localDateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
|
||||
|
||||
// 写入时间戳
|
||||
gen.writeNumber(timestamp);
|
||||
}
|
||||
|
||||
}
|
|
@ -2,9 +2,7 @@ package cn.iocoder.yudao.framework.jackson.config;
|
|||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
|
||||
import cn.iocoder.yudao.framework.common.util.json.databind.NumberSerializer;
|
||||
import cn.iocoder.yudao.framework.common.util.json.databind.TimestampLocalDateTimeDeserializer;
|
||||
import cn.iocoder.yudao.framework.common.util.json.databind.TimestampLocalDateTimeSerializer;
|
||||
import cn.iocoder.yudao.framework.common.util.json.databind.*;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.module.SimpleModule;
|
||||
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
|
||||
|
@ -39,7 +37,10 @@ public class YudaoJacksonAutoConfiguration {
|
|||
.addDeserializer(LocalTime.class, LocalTimeDeserializer.INSTANCE)
|
||||
// 新增 LocalDateTime 序列化、反序列化规则,使用 Long 时间戳
|
||||
.addSerializer(LocalDateTime.class, TimestampLocalDateTimeSerializer.INSTANCE)
|
||||
.addDeserializer(LocalDateTime.class, TimestampLocalDateTimeDeserializer.INSTANCE);
|
||||
.addDeserializer(LocalDateTime.class, TimestampLocalDateTimeDeserializer.INSTANCE)
|
||||
// 新增 LocalTime 序列化、反序列化规则,使用 Long 时间戳
|
||||
.addSerializer(LocalTime.class, TimestampLocalTimeSerializer.INSTANCE)
|
||||
.addDeserializer(LocalTime.class, TimestampLocalTimeDeserializer.INSTANCE);
|
||||
// 1.2 注册到 objectMapper
|
||||
objectMappers.forEach(objectMapper -> objectMapper.registerModule(simpleModule));
|
||||
|
||||
|
|
Loading…
Reference in New Issue