是否应该在同一个对象中使用 @NotNull 和 @JsonProperty(required)

sha*_*cer 7 java validation spring json jackson

所以我正在考虑向我的 json 视图添加约束。

我有一堂与此类似的课程

public class Person {
    @JsonProperty(required = true)
    @NotNull
    @Size(max = 50)
    private String name;
}
Run Code Online (Sandbox Code Playgroud)

我应该保留两者@JsonProperty(required = true)还是@NotNull应该删除其中一个,为什么?


需要明确的是,自 Jackson 2.6 以来,@JsonProperty(required = true)确实抛出了异常

我正在使用 springfox-swagger,看起来当我删除@JsonProperty(required = true)swagger 中的字段时,该字段被标记为可选,但事实并非如此。

我只是想知道这种情况下的最佳做法。

cas*_*lin 7

当在字段或方法上使用@JsonPropertywith requiredset to时, Jackson 将不会执行任何验证。请参阅文档了解更多详细信息。true


出于验证目的,请考虑@NotNullBean Validation(需要验证提供程序,例如Hibernate Validator来执行验证)。

使用 Swagger,您还可以使用@ApiModelProperty和 设置requiredtotrue来指示字段是必填字段。