package com.lunhan.xxx.common.serializer.deserializer; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonDeserializer; import com.lunhan.xxx.common.ConstantFactory; import com.lunhan.xxx.common.util.LocalDateTimeUtil; import com.lunhan.xxx.common.util.StringUtil; import java.io.IOException; import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneOffset; import java.util.Date; /** * 自定义json反序列化 Date 属性 * @author linliu * @date 2020-05-12 */ public class CQDateDeSerializer extends JsonDeserializer { @Override public Date deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { String value = p.getText(); if(StringUtil.isMatch(value, ConstantFactory.REGEX_DATE)) { LocalDateTime date = LocalDateTimeUtil.getDateTime(value, ConstantFactory.STR_DATE); Instant instant = date.toInstant(ZoneOffset.UTC); return Date.from(instant); } else { throw new IOException("can't be deserialize as type “Date”, " + value); } } }