问题描述
我正在使用 @JsonFormat
库中的 fasterxml.jackson
注释:
@JsonFormat(shape = JsonFormat.Shape.STRING,pattern = "yyyy-MM-dd")
private Date endDate;
@JsonFormat(shape = JsonFormat.Shape.STRING,pattern = "yyyy-MM-dd HH:mm:ss")
private Date startDateInUtc;
当日期格式不正确时,我不会得到异常,而是得到错误的日期对象(例如,13 月变成了 1 月)。
根据我的研究,我发现了两种可能的解决方案:
public class JsonDateDeserializer extends JsonDeserializer<Date> {
public static final String DATE_FORMAT = "yyyy-MM-dd";
@Override
public Date deserialize(JsonParser jsonParser,DeserializationContext deserializationContext) throws IOException {
SimpleDateFormat format = new SimpleDateFormat(DATE_FORMAT);
format.setLenient(false);
String dateString = jsonParser.getText();
try {
return format.parse(dateString);
} catch (ParseException e) {
throw new InvalidFormatException(String.format("Date format should be %s",DATE_FORMAT),dateString,Date.class);
}
}
}
对于这两种解决方案,我都无法为不同的字段指定不同的格式。
虽然我可以定义多个反序列化器,但在我看来这是一种非常丑陋的方法。
我认为 @JsonFormat
注释是为了处理不同字段中不同格式的日期而设计的,但正如我所说,输入无效格式时也不例外。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)