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.time.LocalDateTime;
|
|
/**
|
* 自定义json反序列化 LocalDateTime 属性
|
* @author linliu
|
* @date 2020-05-12
|
*/
|
public class CQLocalDateTimeDeSerializer extends JsonDeserializer<LocalDateTime> {
|
@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);
|
}
|
}
|
}
|