我有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 Solution:我将记录数量简化为
(oDataJson \ "value").as[JsArray].value.size
答案 0 :(得分:1)
(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