Scala:播放 - 计算 Json 中的子节点
Scala: Play - count child nodes in Json
我有 json 作为
val json =
{
"header" : "header value"
"value" : [
{
"a" : "a_val"
"b" : "b_val"
"c" : "c_val"
},
{
"a" : "a_val"
"b" : "b_val"
"c" : "c_val"
}
]
}
我要计算
记录数,即 2,我算了
(json \ "value")(0).asOpt[JsArray].map(_.value.size).getOrElse(0)
Tedius,但有效。需要更简单的解决方案
value
中的子节点数,即 3 (a, b and c
)
不知道怎么算这个
编辑:
使用 Daniels 解决方案:我将记录数简化为
(oDataJson \ "value").as[JsArray].value.size
(json \ "value").headOption match {
case Some(JsArray(values)) => values.length
case _ => 0
}
// => 2
(json \ "value").headOption match {
case Some(JsArray(Seq(JsObject(fields), _*))) => fields.size
case _ => 0
}
// => 3
我有 json 作为
val json =
{
"header" : "header value"
"value" : [
{
"a" : "a_val"
"b" : "b_val"
"c" : "c_val"
},
{
"a" : "a_val"
"b" : "b_val"
"c" : "c_val"
}
]
}
我要计算
记录数,即 2,我算了
(json \ "value")(0).asOpt[JsArray].map(_.value.size).getOrElse(0)
Tedius,但有效。需要更简单的解决方案
value
中的子节点数,即 3 (a, b and c
)
不知道怎么算这个
编辑: 使用 Daniels 解决方案:我将记录数简化为
(oDataJson \ "value").as[JsArray].value.size
(json \ "value").headOption match {
case Some(JsArray(values)) => values.length
case _ => 0
}
// => 2
(json \ "value").headOption match {
case Some(JsArray(Seq(JsObject(fields), _*))) => fields.size
case _ => 0
}
// => 3