【问题标题】:Validate nested JSON in POJO using annotation in Spring boot在 Spring Boot 中使用注释验证 POJO 中的嵌套 JSON
【发布时间】:2021-10-29 06:00:49
【问题描述】:

我有一个想要验证的 JSON。

{
  "a": {
    "attribute1": "",
    "attribute2": ""
  },
  "b": {
    "attribute3": "1240717"
  },
  "c": {
    "attribute4": "1321"
  },
  "d": "Lab",
  "c": {
    "attribute5": "2021-09-06T20:42:48",
    "attribute6": "2021-09-06T20:42:48"
  }
}

我想在嵌套的attribute3、attribute4、attribute5 和attribute6 的POJO 类中使用@NotNull 检查NotNull 条件。 我试过这个

public class JsonValidator {
    
    @NonNull
    @javax.validation.constraints.NotBlank
    @NotEmpty(message = "Bad request")
    private String attribute3;
    @NonNull
    @javax.validation.constraints.NotBlank
    @NotEmpty
    private String attribute4;
    @NonNull
    @javax.validation.constraints.NotBlank
    @NotEmpty
    private String attribute5;
    @NonNull
    @javax.validation.constraints.NotBlank
    @NotEmpty
    private String attribute6;

但它只有在属性没有嵌套在另一个对象中并且存在于根对象中时才有效。 谁能告诉我如何实现这一目标

【问题讨论】:

  • 对于初学者@NotBlank 已经与@Nonnull @NotEmpty 具有相同的含义。你也没有展示你的顶级课程;嵌套属性是否标记为@Valid
  • @Valid注释你的复杂对象。然后验证将根据嵌套属性的定义方式触发。
  • 感谢您的回复。我会试试的
  • 成功了吗?如果不能,您可以添加带有所有相关类的完整模型吗?谢谢!

标签: java spring-boot validation


【解决方案1】:

您必须使用@Valid 注释来注释您的复杂对象。这将 y=then 触发嵌套属性。

【讨论】:

  • 已使用“@Valid”,但仍无法按预期工作。必须添加“@JsonProperty”然后它才能工作。但是谢谢大家的投入
猜你喜欢
  • 2019-04-19
  • 1970-01-01
  • 1970-01-01
  • 2014-04-08
  • 2021-12-15
  • 2018-07-04
  • 1970-01-01
  • 2023-01-27
  • 1970-01-01
相关资源
最近更新 更多