package org.dromara.common.json.handler; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonDeserializer; import org.dromara.common.core.utils.ObjectUtils; import java.io.IOException; import java.util.Date; /** * 自定义 Date 类型反序列化处理器(支持多种格式) * * @author AprilWind */ public class CustomDateDeserializer extends JsonDeserializer { /** * 反序列化逻辑:将字符串转换为 Date 对象 * * @param p JSON 解析器,用于获取字符串值 * @param ctxt 上下文环境(可用于获取更多配置) * @return 转换后的 Date 对象,若为空字符串返回 null * @throws IOException 当字符串格式非法或转换失败时抛出 */ @Override public Date deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { DateTime parse = DateUtil.parse(p.getText()); if (ObjectUtils.isNull(parse)) { return null; } return parse.toJdkDate(); } }