你应该在同一个对象中使用@NotNull和@JsonProperty(必需)吗?

时间:2017-08-24 17:14:16

标签: java json spring validation jackson

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

我的课程类似于这个

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

我应该同时保留@JsonProperty(required = true)@NotNull,还是应该删除一个以及为什么?

为了清楚,因为杰克逊2.6 @JsonProperty(required = true)确实抛出exception

我使用的是springfox-swagger,看起来当我删除@JsonProperty(required = true)时,swagger中的字段被标记为可选字段,它不是。

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

1 个答案:

答案 0 :(得分:3)

在字段或方法上使用required true设置为required时, Jackson将不会执行任何验证。有关详细信息,请参阅@JsonProperty

出于验证目的,请考虑来自Bean验证的documentation(执行验证需要验证提供程序,例如@NotNull。)

使用Swagger,您还可以使用Hibernate Validator并将true设置为-ExcludeVersion,以表明字段是必填字段。