Перебор вложенного JSON с Groovy - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть JSON, который я определил в Groovy

import groovy.json.JsonSlurper

def json = '''{
    "upperlevel1": {
      "lowerlevel1": "ABC",
      "lowerlevel2": "DEF"
    },
    "upperlevel2": {
      "lowerlevel1": "HIJ",
      "lowerlevel2": "KLM"
    }
}'''

def slurped = new JsonSlurper().parseText(json)

slurped.each{ key, value ->
    key.each {k, v ->
        println "${v}"
    }
}

Я ожидаю получить следующий вывод:

ABC
DEF
HIJ
KLM

Вместо этого я получаю следующую ошибку:

groovy.lang.MissingMethodException: No signature of method: Script1$_run_closure1$_closure2.doCall() is applicable for argument types: (java.lang.String) values: [u]

Я запускаю это в скриптовом инструменте Дженкинса.

Что мне нужно изменить здесь, чтобы правильно перебирать вложенный JSON / хэш? Я вижу в исключении, что он застревает на u из upperlevel1, но я не понимаю, почему.

Спасибо

1 Ответ

1 голос
/ 17 апреля 2019

Теперь я вижу, что моя ошибка заключалась в том, что мне нужно было перебрать значение (это его собственная карта, содержащая ключ, значения)

Это исправление

slurped.each{ key, value ->
    value.each {k, v ->
       println "${v}"
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...