как применить пользовательскую проверку к значению JSON - PullRequest
0 голосов
/ 08 января 2019

У меня есть данные JSON, поступающие через API. У меня есть набор политик, которые мне нужны для проверки поступающих данных JSON.

Например, у меня есть json, как

{
"users_id":"x",
"is_user_logged_in":"true",
"checkin_date":"2018-12-12",
"checkout_date":"2019-12-13"
}

Теперь я хочу применить валидацию, например, checkin_date должно быть меньше checkout_data или, скажем, если is-user_logged_in истинно, тогда user_id не должно быть нулевым.

Я не могу десериализовать JSON, так как мне нужно передать его другому приложению для использования

Я использую Scala любую идею, как я могу это реализовать. Уловка в том, что может быть несколько политик или правил, которые мне нужно проверить, и я могу получить правила только во время выполнения.

Спасибо

1 Ответ

0 голосов
/ 08 января 2019

Самый простой способ - добавить проверку в конструктор по умолчанию и просто использовать анализатор JSON в качестве средства проверки (не нужно использовать проанализированные данные):

import java.time.LocalDate

case class UserData(
  user_id: Option[String],
  is_user_logged_in: Boolean,
  checkin_date: LocalDate,
  checkout_date: LocalDate
) {
  require(!is_user_logged_in || user_id.isDefined, "missing `user_id` for logged in user")
  require(checkout_date.isAfter(checkin_date), "`checkout_date` should be after `checkin_date`")
}

Для более сложных случаев, пожалуйста, рассмотрите возможность использования некоторой удобной библиотеки проверки, например:

https://github.com/jto/validation

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...