Разобрать JSON-объект в Jenkins - PullRequest
       6

Разобрать JSON-объект в Jenkins

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

У меня проблемы с анализом этого файла json. Похоже, у меня есть некоторые проблемы с синтаксическим анализом имя-ключа объекта, и я не совсем уверен, как решить эту проблему.

Мой JenkinsfileProperties.json файл выглядит так:

{
   "predefines": {
        "69dA06x01": {
            "customer": "hello1",
            "label":    "test1",
            "opt":      true,
            "license": "baseline"
        },
        "69dR08x06": {
            "customer": "hello2",
            "label":    "test2",
            "opt":      true,
            "license": "baseline"
        }
    }
}

Мой заводной файл выглядит так:

conf = getJobConfiguration scm: scm, local: "checkout", file: "JenkinsfileProperties.json"

conf.predefines.each { predef ->
    builds["Build ${predef}"] = build(predef)
    lints["Lint ${predef}"] = lint(predef)
    unitTests["Unit Test ${predef}"] = unitTest(predef, predef.customer)
}

В моей голове config.predefines.each { predef -> даст мне каждыйэкземпляр 69d.... вместе со своими детьми. Так что получить доступ к ребенку - это просто сделать predef.customer или predef.label и т. Д.

Прямо сейчас я получаю No such field found: field java.util.AbstractMap$SimpleImmutableEntry customer. Что я делаю не так?

Мне нужно иметь возможностьперебирайте записи 69..., и мне также нужно будет получить их значение, например 69dA06x01

1 Ответ

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

Решено так

Значения ключей (69d...) доступны следующим образом: predef.key

Подстроки ключей доступны следующим образом:

predef.value["customer"]
predef.value["opt"]
predef.value["license"]
predef.value["label"]

Все вместе:

conf.predefines.each { predef ->
    builds["Build ${predef.key}"] = build(predef)
    lints["Lint ${predef.key}"] = lint(predef)
    unitTests["Unit Test ${predef.key}"] = unitTest(predef, predef.value["customer"])
}

Это работает, если подпункты одинаковы, но я мог бы увидеть сценарий, в котором все подстатьи называются разными вещами в каждом 69d... объект. К счастью, это работает для этого сценария.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...