2014-09-10 23 views
5

Ich habe ein JSON-Dokument ähnlich wie unten strukturiert, und ich versuche, es in Groovy zu analysieren. Grundsätzlich für jede Schule (Schulinfo) möchte ich die SCHOOL_COUNTRY und andere Felder greifen. Ich versuche diesen Code unten, aber es gibt nicht zurück, was ich brauche. Für jede Schule aufgeführt (1000 Jahre), ich möchte nur bestimmte Teile greifen, zum Beispiel:Groovy - JsonSlurper Parsing JSON-Datei

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

Also im Grunde für jede Schule, nur aus dem Namen der Schule drucken. Die JSON-Struktur:

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

Antwort

8

Ich bin mir nicht sicher, ob es der einzige Fehler ist, aber man kann nicht schoolInfo.SCHOOL_NAME in each lesen. SCHOOL_NAME ist Eigentum von json.SCHOOL_INFO, also it.SCHOOL_NAME ist der richtige Weg, um darauf zuzugreifen. Nehmen Sie am Beispiel unten aussehen:

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

Er druckt:

Findland Higher Learning 
2

Hier gehen Sie:

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

Ich bin mir nicht sicher, ob es sollte _ Zeichen in Schulname sein .

1
println it.SCHOOL_INFO."SCHOOL NAME" 

Dies sollte ohne _ Zeichen funktionieren.