我正在为 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