Scala:在Json中播放count个子节点



我有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

最新更新