首页 > 解决方案 > JSON:Spring Boot 条件验证

问题描述

我有一个用 Spring Boot 编写的 POST API。我需要有条件地验证一些数据。例如,这是我的 JSON:

{
  "p1": false,
  "p2": true,
  "p3": false
}

我想在这里实现的验证是

Spring中是否有一些条件JSON验证示例可供参考?

标签: jsonvalidationspring-boot

解决方案


您可以为您的对象编写自定义约束。

其余终点。

@RequestMapping(value = "/doSomething", method = RequestMethod.POST)
public ResponseEntity<String> doSomething(@RequestBody @Valid MyObject myObject) {

身体 POJO。

@MyConstraint(message = "p1 is false, p3 should also be false")
public class MyObject {

    private boolean p1;
    private boolean p2;
    private boolean p3;

   //getters and setters
}

正在使用的约束注释MyObject

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = MyConstraintValidator.class)
public @interface MyConstraint {

    String message() default "Invalid object";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};
}

约束启动的验证器。

public class MyConstraintValidator implements ConstraintValidator<MyConstraint, MyObject> {

    @Override
    public boolean isValid(MyObject value, ConstraintValidatorContext context) {

        if (!value.isP1()) {
            return value.isP1() == value.isP3();
        }

        return true;
    }
}

推荐阅读