java - 你应该在同一个对象中使用@NotNull 和@JsonProperty(required)

标签 java json spring validation jackson

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

我有和这个类似的课

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

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


需要说明的是,Jackson 2.6 @JsonProperty(required = true) 会抛出 exception .

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

我只是想知道在这种情况下的最佳实践。

最佳答案

使用 @JsonProperty 时在字段或方法上将 required 设置为 true 时,Jackson 将不会执行任何验证。查看documentation了解更多详情。


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

使用 Swagger,您还可以使用 @ApiModelProperty并将 required 设置为 true 以指示字段是必填的。

关于java - 你应该在同一个对象中使用@NotNull 和@JsonProperty(required),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45867473/

相关文章:

java - quickblox android中的多个附件

java - 在java中读取和写入.PPM图像?

python - 如何在 Python 中正确解开此 json 响应以将我需要的数据放入 Pandas DataFrame 中?

java - 带有 ActiveMQ 和 Spring 的 JMS 独立消费者

java - 从一种方法返回不同的资源类型列表

spring - 无法在 Tomcat 中启动 JSP

java - Spring MVC @RequestMapping 参数问题

java - java中replaceAll方法的特殊问题

php - 使用 php 处理 json 字符串中的特定元素

c# - ASP.NET Core Web API 自动 JSON 参数反序列化不起作用