Scala:Play - 计算Json中的子节点

时间:2015-12-14 22:56:07

标签: json scala playframework children

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

  3. 不知道如何算这个

    编辑: 使用Daniels Solution:我将记录数量简化为

    (oDataJson \ "value").as[JsArray].value.size

1 个答案:

答案 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