import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class CustomDateDeserializer extends JsonDeserializer<Date> {
private final SimpleDateFormat dateTimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
private final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
@Override
public Date deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
String dateString = jsonParser.getText();
try {
if (isDateTimeFormat(dateString)) {
return dateTimeFormat.parse(dateString);
} else {
return dateFormat.parse(dateString);
}
} catch (ParseException e) {
throw new IOException("解析日期错误: " + dateString, e);
}
}
//判断dateString是yyyy-MM-dd HH:mm:ss格式还是yyyy-MM-dd格式
private boolean isDateTimeFormat(String dateString) {
return dateString.length() > 10; // If length > 10, assume it's in datetime format
}
}
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.sws.common.utils.DateUtils;
import com.sws.purify.Serializer.CustomDateDeserializer;
import com.sws.purify.utils.StringUtils;
import lombok.Data;
import java.util.Date;
@Data
public class A{
@JsonDeserialize(using = CustomDateDeserializer.class)
private Date introduceDate;
}