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.NumericUtil; import com.lunhan.xxx.common.util.StringUtil; import java.io.IOException; import java.sql.Timestamp; /** * 自定义json反序列化 LocalDateTime 属性 * @author linliu * @date 2020-07-03 */ public class CQTimestampDeSerializer extends JsonDeserializer { @Override public Timestamp deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { String value = p.getText(); if(StringUtil.isMatch(value, ConstantFactory.REGEX_DATE)) { return LocalDateTimeUtil.getTimeStamp(value, ConstantFactory.STR_DATE); } else if(StringUtil.isMatch(value, ConstantFactory.REGEX_DATETIME)) { return LocalDateTimeUtil.getTimeStamp(value); } else if(StringUtil.isMatch(value, ConstantFactory.REGEX_DATETIME_FULL)) { return LocalDateTimeUtil.getTimeStamp(value, ConstantFactory.STR_DATE_FULLMS); } else if(StringUtil.isMatch(value, "^[0-9]{13}$")) { return LocalDateTimeUtil.getTimeStamp(NumericUtil.tryParseLong(value)); } else { throw new IOException("can't be deserialize as type “Timestamp”, " + value); } } }