我有一个用Spring Boot编写的POST API。我需要有条件地验证一些数据。例如,这是我的JSON:
{
"p1": false,
"p2": true,
"p3": false
}
我要在此处实现的验证是
如果p1
是false
,则p3
也应该是false
。
如果p1
是true
,则p3
不必是true
。
Spring中是否有一些条件JSON验证示例可供参考?
答案 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;
}
}