JSON: условная проверка Spring Boot - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть POST API, написанный на Spring Boot.Мне нужно проверить некоторые данные условно.Например, это мой JSON:

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

Проверка, которую я пытаюсь достичь здесь:

  • Если p1 равно false, тогда p3 также должно быть false.

  • Если p1 равно true, p3 не обязательно должно быть true.

Есть ли какой-нибудь примерусловной проверки JSON в Spring для ссылки из?

1 Ответ

0 голосов
/ 14 декабря 2018

Вы можете написать собственное ограничение для вашего объекта.

Конечная точка покоя.

@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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...