2014-09-10 136 views
5

我有一个类似于下面的JSON文档,我试图在Groovy中解析它。基本上每个学校(学校信息),我想抓住SCHOOL_COUNTRY和其他领域。我正在尝试下面的代码,但它没有返回我所需要的。对于列出的每个学校(1000的),我想抓住只有特定的部分,例如:Groovy - JsonSlurper解析JSON文件

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结构:

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

回答

8

我不知道这是否是唯一的错误,但你无法读取eachschoolInfo.SCHOOL_NAMESCHOOL_NAMEjson.SCHOOL_INFO的财产,因此it.SCHOOL_NAME是访问它的正确方法。就拿看下面的例子:

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" 
} 

它打印:

Findland Higher Learning 
2

在这里你去:

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" 
} 

我不知道是否应该有_登录学校名称

1
println it.SCHOOL_INFO."SCHOOL NAME" 

这应该没有_符号工作。