Получить Json и преобразовать его в список [Groovy] - PullRequest
0 голосов
/ 24 октября 2018

Я использую Groovy для получения списка образов докера из нашей артефакты,

Мне удалось получить список версий для определенного образа докера в виде json, и я хотел бы поместить его всписок, так что я смогу использовать его в качестве «активного параметра выбора».

Я не отличный специалист, но я пытался создать небольшой скрипт, но я получаю эту ошибку:

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}

Полный Json, который я получаю, это:

{
    "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, _uploads

Все, что мне нужно, это поместить этот результат в список, поэтому я получу отдельные значения из этого списка (как вы можетепосмотрите на изображение, которое я загрузил - вот как это выглядит сейчас)

enter image description here

1 Ответ

0 голосов
/ 25 октября 2018

Итак ...

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 "/"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...