Есть ли элегантный способ сделать его более гибким, чтобы Date успешно анализировался независимо от того, является ли это гггг-ММ-дд чч:мм:сс или гггг-ММ-дд?
Желательно, не пробуя несколько форматов и не обрабатывая исключения.
Код: Выделить всё
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.JsonToken;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
public class DateTimeFormatDeserializer extends JsonDeserializer{
@Override
public Date deserialize(JsonParser jp, DeserializationContext ctxt)
throws IOException, JsonProcessingException {
if (jp.getCurrentToken() == JsonToken.VALUE_STRING) {
String str = jp.getText().trim();
if (str.length() == 0) {
return null;
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
Date date = sdf.parse(str);
return date;
} catch (ParseException e) {
throw new RuntimeException("Cannot convert string '" + str +"' to Date (yyyy-MM-dd HH:mm:ss)");
}
}
return null;
}
}