我有一个JSON,看起来像这样,是的,JSON是一个有效的格式。
[2,
"19223201",
"BootNotification",
{
"reason": "PowerUp",
"chargingStation": {
"model": "SingleSocketCharger",
"vendorName": "VendorX"
}
}
]
我正在使用Play框架的JSON库,我想了解如何解析第三行并将BootNotification值提取为字符串。
如果它有一个键,我可以使用该键遍历JSON并获得相应的值,但这里的情况并非如此。我也不可能像上面的例子那样逐行加载并从行号3推断。
关于我该怎么做,有什么建议吗?
我想,在Ammonite上尝试了所有这些之后,我找到了一种方法。以下是我可以做的:
@ val input: JsValue = Json.parse("""[2,"12345678","BNR",{"reason":"PowerUp"}]""")
input: JsValue = JsArray(ArrayBuffer(JsNumber(2), JsString("12345678"), JsString("BNR"), JsObject(Map("reason" -> JsString("PowerUp")))))
通过解析JSON,我得到了一个很好的数组,并且我知道我总是期望数组中只有4个元素,所以明确地寻找具有数组索引的元素是我所需要的。因此,为了获得位置3的文本,我可以做以下操作:
@ (input 2)
res2: JsLookupResult = JsDefined(JsString("BNR"))
@ (input 2).toOption
res3: Option[JsValue] = Some(JsString("BNR"))
@ (input 2).toOption.isDefined
res4: Boolean = true