首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Groovy - JsonSlurper解析JSON文件

Groovy - JsonSlurper解析JSON文件
EN

Stack Overflow用户
提问于 2014-09-11 05:18:42
回答 3查看 38.1K关注 0票数 6

我有一个结构类似于下面的JSON文档,我正在尝试在Groovy中解析它。基本上,对于每个学校(学校信息),我想抓取SCHOOL_COUNTRY和其他字段。我正在尝试下面的代码,但它没有返回我需要的东西。对于列出的每个学校(1000个),我只想获取特定的部分,例如:

代码语言:javascript
复制
def parseJSON(long id) {

    JSONFile fileInstance = JSONFile.get(id)
    def json = new JsonSlurper().setType(RELAX).parse(new FileReader(fileInstance.filePath))
    def schoolInfo = json.SCHOOL_INFO
    def schoolName = json.SCHOOL_INFO.SCHOOL_NAME
    schoolInfo.each {
       render(schoolInfo.SCHOOL_NAME)
    }
}

所以基本上,对于每所学校,只需打印出学校的名称。JSON结构:

代码语言:javascript
复制
[{
    "SCHOOL_INFO": {
        "SCHOOL_COUNTRY": "Finland",   
        "SCHOOL NAME": "Findland Higher Learning"              
     },
     "LOCATION": {                  
         "LONGITUDE": "24.999",                   
         "LATITUDE": "61.001"
     }
}]
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-09-11 06:35:44

我不确定这是不是唯一的bug,但是你不能在each中读取schoolInfo.SCHOOL_NAMESCHOOL_NAMEjson.SCHOOL_INFO的属性,所以it.SCHOOL_NAME是访问它的合适方式。请看下面的示例:

代码语言:javascript
复制
import groovy.json.JsonSlurper

def jsonAsText = '''[{
    "SCHOOL_INFO": {
        "SCHOOL_COUNTRY": "Finland",   
        "SCHOOL NAME": "Findland Higher Learning"              
    },
    "LOCATION": {                  
        "LONGITUDE": "24.999",                   
        "LATITUDE": "61.001"
    }
}]'''

def json = new JsonSlurper().parseText(jsonAsText)

def schoolInfo= json.SCHOOL_INFO
schoolInfo.each{
    println it."SCHOOL NAME"
}

它打印:

代码语言:javascript
复制
Findland Higher Learning
票数 10
EN

Stack Overflow用户

发布于 2014-09-11 17:20:29

这就是了:

代码语言:javascript
复制
import groovy.json.JsonSlurper

def t = """[{
    "SCHOOL_INFO": {
        "SCHOOL_COUNTRY": "Finland",   
        "SCHOOL NAME": "Findland Higher Learning"              
     },
     "LOCATION": {                  
         "LONGITUDE": "24.999",                   
         "LATITUDE": "61.001"
     }
}]"""

def slurper = new JsonSlurper().parseText(t)
slurper.each {
    println it.SCHOOL_INFO."SCHOOL NAME"
}

我不确定学校的名字上是否应该有_的标志。

票数 4
EN

Stack Overflow用户

发布于 2016-01-29 03:50:53

代码语言:javascript
复制
println it.SCHOOL_INFO."SCHOOL NAME"

这应该可以在没有_ sign的情况下工作。

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

https://stackoverflow.com/questions/25775267

复制
相关文章

相似问题

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