यह सवाल बेवकूफ गंध सकता है, लेकिन मैं वास्तव में खेलने के 2 में एक शून्य JsValue जांच करने का तरीका जानना चाहता हूँ:प्ले 2 में कैसे जांचें कि कोई जेएसवेल्यू वैरिएबल न्यूल है या नहीं?
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
साथ रूपांतरण टाइप करने के लिए बदल गया है, यह फिर से काम लगता है: play.api.libs.json.JsNull
साथ समानता के लिए
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
काम नहीं करता है। 'वैल जेएस वैल्यू: जेएसवेल्यू = जेएसनुल; Logger.info ("jsValue.isInstanceOf [JsUndefined]:" + jsValue.isInstanceOf [JsUndefined]) '-> प्रदर्शित करता है' झूठा ' – Blackbird
@ ब्लैकबर्ड ऐसा इसलिए है क्योंकि शून्य! = अपरिभाषित। – bjfletcher