获取Json并将其转换为列表[Groovy]

获取Json并将其转换为列表[Groovy],groovy,Groovy,我正在使用Groovy从我们的人工工厂获取docker图像列表 我能够以json的形式获得特定docker映像的版本列表,我想把它放在一个列表中,这样我就能够将它用作“活动选择参数” 我不是groovy专家,但我尝试创建一个小脚本,但我遇到了以下错误: java.lang.NumberFormatException: For input string: "1.0-SNAPSHOT" at java.lang.NumberFormatException.forInputString(Num

我正在使用Groovy从我们的人工工厂获取docker图像列表

我能够以json的形式获得特定docker映像的版本列表,我想把它放在一个列表中,这样我就能够将它用作“活动选择参数”

我不是groovy专家,但我尝试创建一个小脚本,但我遇到了以下错误:

java.lang.NumberFormatException: For input string: "1.0-SNAPSHOT"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:580)
    at java.lang.Integer.valueOf(Integer.java:766)
这是我的脚本:

import groovy.json.JsonSlurper
def response = ["curl", "-X", "GET", "https://stg.jfrog.io/XXX/api/storage/docker-local/genie/galerts?uri", "-H", "Postman-Token: 26403513-778c-43c8-b44b-70cb2bbc4352", "-H", "X-JFrog-Art-Api:Pqs", "-H", "cache-control: no-cache"].execute().text
JsonSlurper slurper = new JsonSlurper()
Map parsedJson = slurper.parseText(response)
String idValue = parsedJson.children.uri
newString = idValue.replaceAll("[<>\\[\\]//]", "");
//def output = [newString]
def l = newString.split(',').collect{it as int}
{
    "repo": "docker-local",
    "path": "/genie/galerts",
    "children": [
        {
            "uri": "/1.0-SNAPSHOT",
            "folder": true
        },
        {
            "uri": "/1.1",
            "folder": true
        },
        {
            "uri": "/1.1-76",
            "folder": true
        },
        {
            "uri": "/1.1-SNAPSHOT",
            "folder": true
        },
        {
            "uri": "/1.2",
            "folder": true
        },
        {
            "uri": "/1.3",
            "folder": true
        },
        {
            "uri": "/1.4",
            "folder": true
        },
        {
            "uri": "/1.4.1",
            "folder": true
        },
        {
            "uri": "/1.4.2",
            "folder": true
        },
        {
            "uri": "/1.4.2-Release",
            "folder": true
        },
        {
            "uri": "/1.4.3",
            "folder": true
        },
        {
            "uri": "/1.4.3.1",
            "folder": true
        },
        {
            "uri": "/1.4.4",
            "folder": true
        },
        {
            "uri": "/_uploads",
            "folder": true
        }
    ],
    "uri": "https://stg.jfrog.io/XXX/api/storage/docker-local/genie/galerts"
这是我在操作后得到的结果:

import groovy.json.JsonSlurper
def response = ["curl", "-X", "GET", "https://stg.jfrog.io/XXX/api/storage/docker-local/genie/galerts?uri", "-H", "Postman-Token: 26403513-778c-43c8-b44b-70cb2bbc4352", "-H", "X-JFrog-Art-Api:Pqs", "-H", "cache-control: no-cache"].execute().text
JsonSlurper slurper = new JsonSlurper()
Map parsedJson = slurper.parseText(response)
String idValue = parsedJson.children.uri
newString = idValue.replaceAll("[<>\\[\\]//]", "");
//def output = [newString]
def l = newString.split(',').collect{it as int}
{
    "repo": "docker-local",
    "path": "/genie/galerts",
    "children": [
        {
            "uri": "/1.0-SNAPSHOT",
            "folder": true
        },
        {
            "uri": "/1.1",
            "folder": true
        },
        {
            "uri": "/1.1-76",
            "folder": true
        },
        {
            "uri": "/1.1-SNAPSHOT",
            "folder": true
        },
        {
            "uri": "/1.2",
            "folder": true
        },
        {
            "uri": "/1.3",
            "folder": true
        },
        {
            "uri": "/1.4",
            "folder": true
        },
        {
            "uri": "/1.4.1",
            "folder": true
        },
        {
            "uri": "/1.4.2",
            "folder": true
        },
        {
            "uri": "/1.4.2-Release",
            "folder": true
        },
        {
            "uri": "/1.4.3",
            "folder": true
        },
        {
            "uri": "/1.4.3.1",
            "folder": true
        },
        {
            "uri": "/1.4.4",
            "folder": true
        },
        {
            "uri": "/_uploads",
            "folder": true
        }
    ],
    "uri": "https://stg.jfrog.io/XXX/api/storage/docker-local/genie/galerts"
结果:1.0-SNAPSHOT、1.1、1.1-76、1.1-SNAPSHOT、1.2、1.3、1.4、1.4.1、1.4.2、1.4.2-Release、1.4.3、1.4.3.1、1.4.4、_上载

我所需要的就是把这个结果放到一个列表中,这样我就可以从这个列表中得到单独的值(正如你在我上传的图片中所看到的,这就是它现在的样子)

所以

String idValue = parsedJson.children.uri // THIS IS A LIST, which you're then converting to a string by assigning it to one. 
相反:

List versions = parsedJson.children.uri  
或者,如果您愿意:

List versions = parsedJson.children.collect { it.uri[1..-1] }  // strips off the leading "/"

错误很明显-
“1.0-SNAPSHOT”
不是
int
。只需使用:
defl=newString.split(',')
collect{it as int}
。1.4.1也不是int