簡體   English   中英

Groovy - JsonSlurper解析JSON文件

[英]Groovy - JsonSlurper Parsing JSON file

我有一個類似於下面結構的JSON文檔,我試圖在Groovy中解析它。 基本上每個學校(學校信息),我想抓住SCHOOL_COUNTRY和其他領域。 我正在嘗試下面的代碼,但它沒有返回我需要的東西。 對於列出的每所學校(1,000),我只想抓住特定的部分,例如:

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

我不確定它是否是唯一的錯誤,但你不能在each讀取schoolInfo.SCHOOL_NAME 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

干得好:

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

我不確定學校名稱是否應該_簽名。

println it.SCHOOL_INFO."SCHOOL NAME"

這應該沒有_符號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM