获取Json并将其转换为列表[Groovy]
我正在使用Groovy从我们的人工工厂获取docker图像列表 我能够以json的形式获得特定docker映像的版本列表,我想把它放在一个列表中,这样我就能够将它用作“活动选择参数” 我不是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
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