【发布时间】:2015-06-26 03:10:37
【问题描述】:
这个问题听起来可能很愚蠢,但我真的很想知道如何在 Play 2 中检查 NULL JsValue:
scala> import play.api.libs.json._
import play.api.libs.json._
scala> val json = Json.obj("a" -> true)
json: play.api.libs.json.JsObject = {"a":true}
scala> val a = json \ "nonExisting"
a: play.api.libs.json.JsValue = null
scala> a == null
res1: Boolean = false
scala> Option(a)
res2: Option[play.api.libs.json.JsValue] = Some(null)
您可以看到变量a 的值是null,但== 检查返回false。但是,以下内容按预期工作:
scala> val b: JsValue = null
b: play.api.libs.json.JsValue = null
scala> b == null
res3: Boolean = true
当我使用asOpt 进行类型转换时,它似乎又可以工作了:
scala> val c = json \ "a"
c: play.api.libs.json.JsValue = true
scala> c.asOpt[Boolean]
res4: Option[Boolean] = Some(true)
scala> a.asOpt[Boolean]
res5: Option[Boolean] = None
【问题讨论】:
-
对我来说,您上面的情况不起作用;我不得不使用第二种解决方案来比较您的等效
b == JsNull而不是b == null。类型为play.api.libs.json.JsValue = null的b为b == null提供了false,但为b == JsNull提供了true。
标签: json scala playframework