Merge branch 'master-jdk21' of https://gitee.com/zhijiantianya/ruoyi-vue-pro
This commit is contained in:
commit
3bbbf8db11
|
@ -2,9 +2,9 @@ package cn.iocoder.yudao.framework.jackson.config;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
|
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
|
||||||
import cn.iocoder.yudao.framework.jackson.core.databind.LocalDateTimeDeserializer;
|
|
||||||
import cn.iocoder.yudao.framework.jackson.core.databind.LocalDateTimeSerializer;
|
|
||||||
import cn.iocoder.yudao.framework.jackson.core.databind.NumberSerializer;
|
import cn.iocoder.yudao.framework.jackson.core.databind.NumberSerializer;
|
||||||
|
import cn.iocoder.yudao.framework.jackson.core.databind.TimestampLocalDateTimeDeserializer;
|
||||||
|
import cn.iocoder.yudao.framework.jackson.core.databind.TimestampLocalDateTimeSerializer;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import com.fasterxml.jackson.databind.module.SimpleModule;
|
import com.fasterxml.jackson.databind.module.SimpleModule;
|
||||||
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
|
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
|
||||||
|
@ -37,13 +37,13 @@ public class YudaoJacksonAutoConfiguration {
|
||||||
.addDeserializer(LocalDate.class, LocalDateDeserializer.INSTANCE)
|
.addDeserializer(LocalDate.class, LocalDateDeserializer.INSTANCE)
|
||||||
.addSerializer(LocalTime.class, LocalTimeSerializer.INSTANCE)
|
.addSerializer(LocalTime.class, LocalTimeSerializer.INSTANCE)
|
||||||
.addDeserializer(LocalTime.class, LocalTimeDeserializer.INSTANCE)
|
.addDeserializer(LocalTime.class, LocalTimeDeserializer.INSTANCE)
|
||||||
// 新增 LocalDateTime 序列化、反序列化规则
|
// 新增 LocalDateTime 序列化、反序列化规则,使用 Long 时间戳
|
||||||
.addSerializer(LocalDateTime.class, LocalDateTimeSerializer.INSTANCE)
|
.addSerializer(LocalDateTime.class, TimestampLocalDateTimeSerializer.INSTANCE)
|
||||||
.addDeserializer(LocalDateTime.class, LocalDateTimeDeserializer.INSTANCE);
|
.addDeserializer(LocalDateTime.class, TimestampLocalDateTimeDeserializer.INSTANCE);
|
||||||
// 1.2 注册到 objectMapper
|
// 1.2 注册到 objectMapper
|
||||||
objectMappers.forEach(objectMapper -> objectMapper.registerModule(simpleModule));
|
objectMappers.forEach(objectMapper -> objectMapper.registerModule(simpleModule));
|
||||||
|
|
||||||
// 2. 设置 objectMapper 到 JsonUtils {
|
// 2. 设置 objectMapper 到 JsonUtils
|
||||||
JsonUtils.init(CollUtil.getFirst(objectMappers));
|
JsonUtils.init(CollUtil.getFirst(objectMappers));
|
||||||
log.info("[init][初始化 JsonUtils 成功]");
|
log.info("[init][初始化 JsonUtils 成功]");
|
||||||
return new JsonUtils();
|
return new JsonUtils();
|
||||||
|
|
|
@ -10,16 +10,18 @@ import java.time.LocalDateTime;
|
||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* LocalDateTime反序列化规则
|
* 基于时间戳的 LocalDateTime 反序列化器
|
||||||
* <p>
|
*
|
||||||
* 会将毫秒级时间戳反序列化为LocalDateTime
|
* @author 老五
|
||||||
*/
|
*/
|
||||||
public class LocalDateTimeDeserializer extends JsonDeserializer<LocalDateTime> {
|
public class TimestampLocalDateTimeDeserializer extends JsonDeserializer<LocalDateTime> {
|
||||||
|
|
||||||
public static final LocalDateTimeDeserializer INSTANCE = new LocalDateTimeDeserializer();
|
public static final TimestampLocalDateTimeDeserializer INSTANCE = new TimestampLocalDateTimeDeserializer();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public LocalDateTime deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
|
public LocalDateTime deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
|
||||||
|
// 将 Long 时间戳,转换为 LocalDateTime 对象
|
||||||
return LocalDateTime.ofInstant(Instant.ofEpochMilli(p.getValueAsLong()), ZoneId.systemDefault());
|
return LocalDateTime.ofInstant(Instant.ofEpochMilli(p.getValueAsLong()), ZoneId.systemDefault());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -9,16 +9,18 @@ import java.time.LocalDateTime;
|
||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* LocalDateTime序列化规则
|
* 基于时间戳的 LocalDateTime 序列化器
|
||||||
* <p>
|
*
|
||||||
* 会将LocalDateTime序列化为毫秒级时间戳
|
* @author 老五
|
||||||
*/
|
*/
|
||||||
public class LocalDateTimeSerializer extends JsonSerializer<LocalDateTime> {
|
public class TimestampLocalDateTimeSerializer extends JsonSerializer<LocalDateTime> {
|
||||||
|
|
||||||
public static final LocalDateTimeSerializer INSTANCE = new LocalDateTimeSerializer();
|
public static final TimestampLocalDateTimeSerializer INSTANCE = new TimestampLocalDateTimeSerializer();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
|
public void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
|
||||||
|
// 将 LocalDateTime 对象,转换为 Long 时间戳
|
||||||
gen.writeNumber(value.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli());
|
gen.writeNumber(value.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue