Thanks it works now! El lunes, 19 de abril de 2021 a las 18:55:19 UTC+2, [email protected] escribió:
> You're missing the most important value of what JsonSlurper (and similar > tools) provides. There is no reason to iterate maps, and it's important to > realize that there is no ordering guarantee of map values. > > If you want to reference the "issues" property, just reference > "json.issues". You will need to iterate over the "json.issues" list, and > each of those objects should be "issue" objects, and if you need to > reference those particular properties, just reference "issue.type", > "issue.severity", et cetera. > > On Monday, April 19, 2021 at 9:23:27 AM UTC-7 [email protected] > wrote: > >> I have a json object which I receive in my jenkins pipeline through a url >> and I parse it like this: >> ``` >> def url = 'http://localhost:8080/job/find_issues/22/cppcheck/all/api/json >> ' >> def json = new JsonSlurper().parseText( new URL(url).text ) >> >> ``` >> >> Which has this format >> ``` >> { >> "_class": "io.jenkins.plugins.analysis.core.restapi.ReportApi", >> "issues": [], >> "size": 100, >> "toString": "- (-): 100 issues (0 duplicates)" >> } >> ``` >> which can have a different number of issues inside the `issues` list, >> each of them having this structure: >> ``` >> { >> "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" >> } >> ``` >> How can I access the Issues list and the iterate through each one of the >> issues and them through each of the issue keys? >> I have tried different ways, lastly I have this: >> ``` >> 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() >> } >> } >> } >> } >> ``` >> But when I call print `msg` I have something like this: >> ``` >> 17:13:09 New ERROR found in static analysis, TYPE OF ERROR null, >> SEVERITY: null, ERROR MESSAGE: null, FILE null AT LINE: null >> ``` >> It seems like I am over iterating but I do not get to see where is the >> mistake... >> > -- You received this message because you are subscribed to the Google Groups "Jenkins Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/d1d4c5eb-a8ca-450d-9d9c-7a49d8ddc803n%40googlegroups.com.
