【发布时间】:2018-09-04 02:34:38
【问题描述】:
我有两个字段:startDate 和 endDate,我需要确保结束日期等于或晚于开始日期。最好的方法是什么?
我想确保 endDate 在 startDate 之后被反序列化,这样我就可以将逻辑放在它的 setter 方法中,例如:
@JsonSetter( "end" )
public void setEnd(String end)
{
this.endDate = parseZonedDateTime( end );
//invalid
if ( this.endDate.compareTo( this.startDate ) < 0 )
{
//Throw a validation exception
}
}
但这只有在保证首先设置 start 时才有效。
【问题讨论】:
-
为什么不写一个自定义的反序列化器?
-
添加一个构造函数来获取所有字段并在那里进行验证。有关构造函数注释的说明,请参阅this question。
-
可能不是一个干净的解决方案,但一种 hack 是放置一个占位符并在最后注入或替换它?
-
@AlexanderPolozov 是序列化,不是反序列化