readJSON - как читать ключевые элементы в виде списка - PullRequest
0 голосов
/ 16 октября 2019

У меня проблемы с чтением всех ключей "type-XX" из JSON с readJSON

oldJson string:

{
"branch":{
    "type-0.2":{"version":"0.2","rc":"1","rel":"1","extras":"1"}}
    "type-0.3":{"version":"0.3","rc":"1","rel":"1","extras":"1"}}
}

Я пытаюсь получить к нему доступ, как в примере https://jenkins.io/doc/pipeline/steps/pipeline-utility-steps/#readjson-read-json-from-files-in-the-workspace

def branchList = new JsonSlurper().parseText(oldJson['branch'])
echo (branchList.keySet().toString())

но происходит сбой:

hudson.remoting.ProxyException: groovy.lang.MissingMethodException: Нет сигнатуры метода: groovy.json.JsonSlurper.parseText () не применим для типов аргументов: (net.sf.json.JSONObject) значения:

Я хотел бы получить список ["type-0.2", "type-0.3"]

1 Ответ

1 голос
/ 16 октября 2019

Указанная вами строка JSON недопустима. Существует дополнительный } и пропущенный , после первого дочернего элемента. Это должно быть:

{
"branch":{
    "type-0.2":{"version":"0.2","rc":"1","rel":"1","extras":"1"},
    "type-0.3":{"version":"0.3","rc":"1","rel":"1","extras":"1"}
    }
}

Теперь вы можете проанализировать это, используя шаг readJSON в вашем конвейере, чтобы получить список ключей.

stage('Read-JSON') {
    steps {
        script {
            def oldJson = '''{
            "branch":{
                "type-0.2":{"version":"0.2","rc":"1","rel":"1","extras":"1"},
                "type-0.3":{"version":"0.3","rc":"1","rel":"1","extras":"1"}
                }
            }'''
            def props = readJSON text: oldJson
            def keyList = props['branch'].keySet()
            echo "${keyList}"
            // println(props['branch'].keySet())

        }
    }
}

Вывод:

[Pipeline] stage
[Pipeline] { (Read-JSON)
[Pipeline] script
[Pipeline] {
[Pipeline] readJSON
[Pipeline] echo
[type-0.2, type-0.3]
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...