2014-09-10 28 views
5

Tôi có một tài liệu JSON có cấu trúc tương tự như dưới đây, và tôi đang cố gắng phân tích nó trong Groovy. Về cơ bản cho mỗi trường học (Thông tin trường học), tôi muốn lấy SCHOOL_COUNTRY và các trường khác. Tôi đang thử mã này dưới đây nhưng nó không trả lại những gì tôi cần. Đối với mỗi trường được liệt kê (1.000), tôi chỉ muốn lấy các phần cụ thể, ví dụ:Groovy - JsonSlurper Phân tích cú pháp tệp 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) 
    } 
} 

Vì vậy, về cơ bản cho mỗi trường, chỉ cần in tên trường. Cấu trúc JSON:

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

Trả lời

8

Tôi không chắc chắn nếu đó là lỗi duy nhất nhưng bạn không thể đọc schoolInfo.SCHOOL_NAME trong each. SCHOOL_NAME là tài sản của json.SCHOOL_INFO vì vậy it.SCHOOL_NAME là cách thích hợp để truy cập. Đưa nhìn vào ví dụ dưới đây:

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

It in:

Findland Higher Learning 
2

đây Bạn đi:

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

Tôi không chắc chắn nếu cần có _ đăng nhập TÊN TRƯỜNG .

1
println it.SCHOOL_INFO."SCHOOL NAME" 

Điều này sẽ hoạt động mà không có dấu _.

Các vấn đề liên quan