Этот вопрос может пахнуть глупо, но я действительно хочу знать, как проверить NULL JsValue в Play 2:В Play 2 как проверить, является ли переменная JsValue NULL?
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
Действительно ли это работает? Во время компиляции я получаю следующее предупреждение: 'myJsValue.isInstanceOf [JsUndefined]': 'бесплодный тест типа: значение типа play.api.libs.json.JsValue также не может быть play.api.libs.json.JsUndefined ' – Blackbird
Не работает. 'val jsValue: JsValue = JsNull; Logger.info ("jsValue.isInstanceOf [JsUndefined]:" + jsValue.isInstanceOf [JsUndefined]) '-> отображает' false' – Blackbird
@Blackbird Это потому, что null! = Undefined. – bjfletcher