问题描述:
某次上线项目之后,把数据保存的数据创建时间也回传到前端了,前端会把后端所有的数据都传到后端,这个Date类型的字段后端解析不了,导致调用接口一直出现错误。
原因分析:
后端接收创建时间字段的时候没有格式化为后端可以识别的Date类型
解决方案:
在接收前端传过来的实体类上增加@JsonDeserialize注解。
@JsonDeserialize(using = DateTimeJsonDeserializer.class)
private Date createTime; // 创建时间
@JsonDeserialize作用:反序列化对参数进行封装
DateTimeJsonDeserializer是写的实现对Date类型参数进行的封装格式化类。该类需要继承 JsonDeserializer 类,并重写 deserialize()方法。
具体实现:
private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@Override
public Date deserialize(JsonParser jsonParser, DeserializationContext context) throws IOException {
try {
return format.parse(jsonParser.getText());
} catch (ParseException e) {
return null;
}
}