0
我有一個場景,解析JSON時的情形類這樣播放JSON組合子驗證至少一個字段中指定
implicit val userRead: Reads[User] = (
(__ \ "name").read[String] ~
(__ \ "email").readNullable[String] ~
(__ \ "phone").readNullable[String] ~
Reads.pure(None)
)(User.apply _)
我不要求兩個email
和phone
可用,但在其中至少有一個必須可用。
在我的例子類的定義,我可以阻止他們兩人都是空的,
case class User(name: String, email: Option[String], phone: Option[String], id: Option[Long] = None) {
require(email.nonEmpty || phone.nonEmpty, "must have at least an email or phone number")
}
的情況。但是,這樣做會產生異常,和一個500個狀態響應,當這應該是一個由於用戶輸入而導致的400錯誤。
我當然可以在我的控制器中手動執行驗證,但我想知道是否有更乾淨的方法來執行此操作。
感謝Tyth,至少這樣我就不必在我的所有代碼驗證。 – Khanetor