JSON:Spring Boot条件验证

时间:2018-12-14 09:39:16

标签: json validation spring-boot

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

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

我要在此处实现的验证是

  • 如果p1false,则p3也应该是false

  • 如果p1true,则p3不必是true

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

1 个答案:

答案 0 :(得分:0)

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

其余终点。

@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;
    }
}