2

我正在为 json 对象编写自定义验证器。

默认方法是创建一个 case 类T和一个 type 的隐式读取器Reads[T]

这就是我的代码的样子(我为第一个 json 属性创建了一个简单的“总是失败”验证器,只是为了说明我的观点)。

(第二个验证器看起来有点不同,因为我还需要"id"验证"body"属性,但我想让它只在第一个成功的情况下运行)。

case class ExecuteQueryModel(datasourceId: Long, body: String)

object ExecuteQueryModel {
  def makeModel(id: Long, tpl: (Long, String)): ExecuteQueryModel = new ExecuteQueryModel(id, tpl._2)

implicit val reads: Reads[ExecuteQueryModel] = (
  (JsPath \ "id").read[Long](x => false) and
    (JsPath). read[(Long, String)](connectionDataIsValid("id", "qbody")))(ExecuteQueryModel.makeModel _)

}

我的问题是,如果第一个验证器失败,我希望整个验证失败,这样当我运行第二个验证器时,我可以指望 ID 是有效的。

这可能吗?提前致谢。我正在运行播放版本2.4.0

4

0 回答 0