我怎样才能遍历 json 里面的对象列表?

how can I iterate through a json with a list of objects inside?

我有一个 json 对象,我通过 url 在我的 jenkins 管道中收到它,我这样解析它:

def url = 'http://localhost:8080/job/find_issues/22/cppcheck/all/api/json'
def json = new JsonSlurper().parseText( new URL(url).text )

有这种格式

{
"_class": "io.jenkins.plugins.analysis.core.restapi.ReportApi",
"issues": [],
"size": 100,
"toString": "- (-): 100 issues (0 duplicates)"
}

issues 列表中可以有不同数量的问题,每个问题都具有以下结构:

{
"addedAt": 0,
"authorEmail": "-",
"authorName": "-",
"baseName": "stat_obj.cpp",
"category": "",
"columnEnd": 0,
"columnStart": 0,
"commit": "-",
"description": "",
"fileName": "D:/Source/Game/objects/stat_obj.cpp",
"fingerprint": "D2CD3A23FB45D3A1F1C3CB8BE5241602",
"lineEnd": 5592,
"lineStart": 5592,
"message": "Unmatched '('. Configuration: 'DEBUGMAPEXPLORATION'.",
"moduleName": "",
"origin": "cppcheck",
"originName": "CPPCheck",
"packageName": "-",
"reference": "19",
"severity": "HIGH",
"toString": "D:/Source/Game/objects/stat_obj.cpp(5592,0): syntaxError: : Unmatched '('. Configuration: 'DEBUGMAPEXPLORATION'.",
"type": "syntaxError"
}

如何访问问题列表并遍历每个问题并通过每个问题键遍历它们? 我尝试了不同的方法,最后我得到了这个:

for (entry in json) {
    if(entry.key == "issues")
    {
        for (issue in entry.value) {
            entry.value.each{ key, value ->
                if (key == "fileName"){
                    errorsList.add(value)
                }
                if (key == "lineStart"){
                    errorsList.add(value)
                }
                if (key == "message"){
                    errorsList.add(value)
                }
                if (key == "severity"){
                    errorsList.add(value)
                }
                if (key == "type"){
                    errorsList.add(value)
                }
                def msg = "New ERROR found in static analysis, TYPE OF ERROR ${errorsList[4]}, SEVERITY: ${errorsList[3]}, ERROR MESSAGE: ${errorsList[2]}, FILE ${errorsList[0]} AT LINE: ${errorsList[1]}"
                println msg
                errorsList.clear()
            }
        }
    }
}

但是当我调用 print msg 时,我有这样的事情:

17:13:09  New ERROR found in static analysis, TYPE OF ERROR null, SEVERITY: null, ERROR MESSAGE: null, FILE null AT LINE: null

看来我迭代过度了,但我没有看到错误在哪里...

json.issues.each{issue->
    def msg = "New ERROR found in static analysis, TYPE OF ERROR ${issue.type}"+
              ", SEVERITY: ${issue.severity}, ERROR MESSAGE: ${issue.message}"+
              ", FILE ${issue.fileName} AT LINE: ${issue.lineStart}"
    println msg
}