仅通过Play Json进行验证

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了仅通过Play Json进行验证相关的知识,希望对你有一定的参考价值。

我想使用PlayJson仅验证某些json的多个字段,而不将其映射到自定义对象。我只关心验证标准的是或否答案。这样可以使用PlayJson吗?到目前为止,我有类似的东西,

val json = .....

val reads = (JsPath  "foo").read[String](min(5)) and
      (JsPath  "bar").read[String](max(10))

json.validate["I ONLY WANT TO VALIDATE NOT MAP"](reads) match {
  case s: JsSuccess => true
  case e: JsError => false
}

感谢您的Stack Overflow社区。

答案

代替通过Reads[MyModel]反序列化为案例类模型,我们可以像这样通过Reads[(String, String)]反序列化为元组

import play.api.libs.json._
import play.api.libs.json.Reads._
import play.api.libs.functional.syntax._

val reads = (
  (JsPath  "foo").read[String](minLength[String](5)) and
  (JsPath  "bar").read[String](minLength[String](10))
).tupled

val json = Json.parse(
  """
    |{
    |  "foo": "abcde",
    |  "bar": "woohoowoohoo",
    |  "zar": 42
    |}
    |""".stripMargin)

json.validate(reads).isSuccess

输出

res0: Boolean = true

请注意在创建读取器时如何调用tupled方法,并在验证过程中使用isSuccess来获取布尔值。

https://scalafiddle.io/sf/JBjdt2Y/0

以上是关于仅通过Play Json进行验证的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Play 2.7 for Scala 中编写一个通用 JSON 解析器来验证入站请求?

从片段调用 Google Play 游戏服务

通过 Firebase 身份验证使用 Google Play 游戏

Unity Play 游戏无法进行身份验证

如何通过json暴露play framework 1.2.7中的内部错误消息id?

使用 Google Apps 帐户登录时,在 Android 上对 Google Play 游戏服务进行身份验证会导致错误