我有一个通过api传入的json数据。我有一套策略,需要对即将到来的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
不应该为null。
我无法反序列化json,因为我需要将其传递给其他应用程序以使用
我正在使用Scala的任何想法,我如何实现这一点。问题是我可能需要验证多个策略或规则,而我只能在运行时获取规则。
谢谢
答案 0 :(得分:1)
最简单的方法是将验证添加到默认构造函数,然后仅使用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`")
}
对于更复杂的情况,请考虑使用一些方便的验证库,例如: