package com.nanjing.water.common.serializer.deserializer; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonDeserializer; import com.nanjing.water.common.ConstantFactory; import com.nanjing.water.common.util.LocalDateTimeUtil; import com.nanjing.water.common.util.NumericUtil; import com.nanjing.water.common.util.StringUtil; import java.io.IOException; import java.time.LocalDateTime; /** * 自定义json反序列化 LocalDateTime 属性 * @author linliu * @date 2020-05-12 */ public class CQLocalDateTimeDeSerializer extends JsonDeserializer { @Override public LocalDateTime deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { String value = p.getText(); if(StringUtil.isMatch(value, ConstantFactory.REGEX_DATE)) { return LocalDateTimeUtil.getDateTime(value, ConstantFactory.STR_DATE); } else if(StringUtil.isMatch(value, ConstantFactory.REGEX_DATETIME)) { return LocalDateTimeUtil.getDateTime(value); } else if(StringUtil.isMatch(value, ConstantFactory.REGEX_DATETIME_FULL)) { return LocalDateTimeUtil.getDateTime(value, ConstantFactory.STR_DATE_FULLMS); } else if(StringUtil.isMatch(value, "^[0-9]{13}$")) { return LocalDateTimeUtil.getDateTime(NumericUtil.tryParseLong(value)); } else { throw new IOException("can't be deserialize as type “LocalDateTime”, " + value); } } }