【问题标题】:Play 2.3: How to count json child nodes?玩2.3:如何统计json子节点?
【发布时间】:2015-02-25 05:40:50
【问题描述】:

我有这个 json:

{
  "errors": {
    "password": [
      "This field is required"
    ],
    "email": [
      "This field is required"
    ]
  }
}

如何计算“errors”节点下的子节点?

【问题讨论】:

    标签: json scala playframework playframework-json


    【解决方案1】:

    一种方法,你可以做到这一点:

    import play.api.libs.json.{JsObject, Json}
    
    val errors = """{"errors":{"password":["This field is required"],"email":["This field is required"]}}"""
    val errorsCount = Json.parse(errors).
        asOpt[JsObject].
        flatMap(json => (json \ "errors").asOpt[JsObject]).
        map(json => json.fields.size).getOrElse(0)
    

    【讨论】:

    • 我准确地复制了你的代码,它给了我一个错误:java.lang.OutOfMemoryError: Metaspace
    • “java.lang.OutOfMemoryError: Metaspace”的主要原因是:太多的类或太大的类被加载到元空间。您可以使用 -XX:MaxMetaspaceSize=?m 显式指定 Metaspace,以解决您的问题。我正在运行没有额外配置的 JVM,所以我不确定为什么它不适合你。
    • 我只是关闭并重新打开 cmd,它现在可以工作了。不知道为什么。非常感谢。
    【解决方案2】:
    var a = {
        "errors": {
            "password": [
                "This field is required"
            ],
            "email": [
                "This field is required"
            ]
        }
    };
    
    Object.keys(a.errors).length;
    

    【讨论】:

    • 您似乎提供了javascript代码。我在 scala 中使用 Play Framework。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多