Получите Json и преобразуйте его в список [Groovy]

Я использую 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

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

Получите Json и преобразуйте его в список [Groovy]

Ошибка очевидна - "1.0-SNAPSHOT" не является int. Просто используйте: def l = newString.split(',') с collect { it as int }.

Opal 24.10.2018 22:00

1.4.1 тоже не является int

tim_yates 25.10.2018 00:10
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
803
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Так...

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 "/"

Другие вопросы по теме