我有一个像这样的POJO,其中我用@JsonFormat
和@JsonDeserialize
注释了日期对象
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
@JsonDeserialize(using = DateHandler.class)
private Date mouacceptedTime;
尽管如此,通过其客户端调用API
时,仍然出现以下错误。
Caused by: org.codehaus.jackson.map.JsonmappingException: Can not construct instance of java.util.Date from String value '2000-12-31 19:30:00': not a valid representation (error: Can not parse date "2000-12-31 19:30:00": not compatible with any of standard forms ("yyyy-MM-dd'T'HH:mm:ss.SSSZ","yyyy-MM-dd'T'HH:mm:ss.SSS'Z'","EEE,dd MMM yyyy HH:mm:ss zzz","yyyy-MM-dd"))
at [Source: [B@7c1447b5; line: 1,column: 559] (through reference chain: client.base.response.OnboardingDetailsResponse["onboardingDetailsDTO"]->client.base.dto.OnboardingDetailsDTO["mouacceptedTime"])
这些是我可以找到的唯一两个可以解决此问题的解决方案,但它对我不起作用。还有其他方法可以反序列化日期。
我的dateHandler类看起来像这样
public class DateHandler extends JsonDeserializer {
private static final Logger logger = LoggerFactory.getLogger(DateHandler.class);
@Override
public Object deserialize(JsonParser jsonParser,DeserializationContext deserializationContext) throws IOException,JsonProcessingException {
String date = jsonParser.getText();
try {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return formatter.parse(date);
}catch (Exception e){
logger.info("Exception while fetching :" + e.toString());
}
return date;
}
}