时间格式转换失败
碰到的问题:微信小程序频繁切换界面时,会报时间格式转换错误:
Error while extracting response for type [*****] and content type [application/json;charset=UTF-8]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: For input string: “”; nested exception is com.fasterxml.jackson.databind.JsonMappingException: For input string: “” (through reference chain: *******[“createDate”])"
原因:
之前的代码是这样:
public class DateTimeDeserializer extends JsonDeserializer<Date> {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@Override
public Date deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
Date date = null;
try {
String jsonParserText = jsonParser.getText();
date = this.formatter.parse(jsonParserText);
} catch (ParseException e) {
throw new DateTimeParseException(e);
}
return date;
}
}
SimpleDateFormat这个类不是线程安全的类,当频繁调用的时候,会出现异常
解决方案
每次序列化实体的时候new一个SimpleDateFormat,用完置为null
public class DateTimeDeserializer extends JsonDeserializer<Date> {
@Override
public Date deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
Date date = null;
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
String jsonParserText = jsonParser.getText();
date = formatter.parse(jsonParserText);
} catch (ParseException e) {
throw new DateTimeParseException(e);
}finally {
formatter =null;
}
return date;
}
}