2014-09-10 8 views
5

У меня есть документ JSON, структурированный аналогично ниже, и я пытаюсь разобрать его в Groovy. В основном для каждой школы (информация о школе), я хочу захватить SCHOOL_COUNTRY и другие поля. Я пытаюсь использовать этот код ниже, но он не возвращает то, что мне нужно. Для каждой школы перечисленных (1000-х), я хочу, чтобы захватить только отдельные части, например:Groovy - JsonSlurper Parsing JSON file

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

Я не уверен, если это единственная ошибка, но вы не можете прочитать schoolInfo.SCHOOL_NAME в each. SCHOOL_NAME является собственностью json.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" 

Это должно работать без знака _.