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.sql.Timestamp;
|
|
/**
|
* 自定义json反序列化 LocalDateTime 属性
|
* @author linliu
|
* @date 2020-07-03
|
*/
|
public class CQTimestampDeSerializer extends JsonDeserializer<Timestamp> {
|
@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);
|
}
|
}
|
}
|