首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Groovy JsonSlurper解析对象数组

使用Groovy JsonSlurper解析对象数组
EN

Stack Overflow用户
提问于 2018-03-23 07:58:10
回答 1查看 10.5K关注 0票数 3

这里太棒了。我正在解析一个包含所有国家列表的文件:

代码语言:javascript
复制
{
    "countries": [
      {
        "id": "1",
        "sortname": "AF",
        "name": "Afghanistan"
      },
      {
         "id": "2",
         "sortname": "AL",
         "name": "Albania"
      },
      ...
    ]
}

我试图将每个国家解读为一个可解析的对象,然后我可以在代码中处理:

代码语言:javascript
复制
String countriesJson = new File(classLoader.getResource('countries.json').getFile()).text
def countries = new JsonSlurper().parseText(countriesJson)

countries.each { country ->
    String sortname = country.sortname
    String name = country.name

    // do something with all this info and then move on to the next country
}

当我运行这段代码时,我得到了MissingPropertyExceptions:

代码语言:javascript
复制
Exception in thread "main" groovy.lang.MissingPropertyException: No such property: sortname for class: java.util.LinkedHashMap$Entry
        at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:53)
        at org.codehaus.groovy.runtime.callsite.GetEffectivePojoPropertySite.getProperty(GetEffectivePojoPropertySite.java:66)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGetProperty(AbstractCallSite.java:296)
        ...rest of stacktrace omitted for brevity

为了将数组JSON对象解析到我的sortname name 和变量中,我可以做些什么来解决这个问题呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-23 08:02:26

假设您的json封装在{ ... }中,因此它是有效的(与问题中的不同),您需要首先获得countries对象。

因此:

代码语言:javascript
复制
countries.countries.each { country ->
    String sortname = country.sortname
    String name = country.name

    // do something with all this info and then move on to the next country
}

也许把变量countries重命名为不那么让人困惑的东西?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49444882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档