如何在 Jackson 中指定反序列化顺序?

Don*_*mmy 7 java spring json jackson

我有两个字段:startDateendDate我需要确保结束日期等于或晚于开始日期。最好的方法是什么?

我想确保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
    }
}
Run Code Online (Sandbox Code Playgroud)

但这仅在保证首先设置 start 的情况下才有效。

Joh*_*ohn 7

我有两个字段:startDate 和 endDate,我需要确保结束日期等于或晚于开始日期。最好的方法是什么?

我不会尝试让杰克逊这么做。Jackson 应该只专注于将 json 转换为对象。值的有效性应该由杰克逊负责。也不是反序列化顺序。

尝试在Jackson 转换后进行验证,可以手动进行验证,也可以通过 JSR-303 等验证框架进行验证。


归档时间:

查看次数:

4355 次

最近记录:

2 年,4 月 前