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"
        }
    ]
}

我要计算

  1. 记录数,即 2,我算了

    (json \ "value")(0).asOpt[JsArray].map(_.value.size).getOrElse(0)

    Tedius,但有效。需要更简单的解决方案

  2. 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