Jenkins Groovy анализирует json

Я получил следующий JSON:

{
  "dev": {
    "hoster": "123",
    "id": "123",
  },
  "stage": {
    "hoster": "123",
    "id": "123",
    "merge": "dev",
    "slackChannel": "#dg-test-deployments"
  },
  "master": {
    "hoster": "123",
    "id": "123",
    "merge": "stage",
  },
  "updates": {
    "hoster": "123",
    "id": "123",
    "merge": "master",
    "slackChannel": "#dg-test-deployments"
  }
}

И хотите проверить, существуют ли ключи dev, stage, master и updates.

Любые советы, как это сделать в groovy? :)


person Basti    schedule 02.03.2017    source источник


Ответы (2)


Вы можете попробовать, например:

import groovy.json.JsonSlurper

def json = '''{
  "dev": {
    "hoster": "123",
    "id": "123",
  },
  "stage": {
    "hoster": "123",
    "id": "123",
    "merge": "dev",
    "slackChannel": "#dg-test-deployments"
  },
  "master": {
    "hoster": "123",
    "id": "123",
    "merge": "stage",
  },
  "updates": {
    "hoster": "123",
    "id": "123",
    "merge": "master",
    "slackChannel": "#dg-test-deployments"
  }
}'''
def slurped = new JsonSlurper().parseText(json)
assert slurped.keySet().containsAll(['dev', 'stage', 'master', 'updates'])
person Opal    schedule 02.03.2017
comment
Я хочу попробовать, но как я могу проверить if на assert slurped.keySet().containsAll(['dev', 'stage', 'master', 'updates']) ? - person Basti; 02.03.2017
comment
Вам просто нужно if (slurped.keySet().containsAll(['dev', 'stage', 'master', 'updates']) { println 'whatever'} - person Opal; 02.03.2017
comment
Это сделало это! Большое спасибо - person Basti; 03.03.2017

Pipeline поддерживает readJSON и writeJSON сейчас.

Примечание: плагин Pipeline Utility Steps Plugin необходимо установить. См. этот ответ для получения дополнительной информации. Пример кода можно найти в образце github.

person akostadinov    schedule 03.08.2017
comment
Минималистичный и эффектный. - person Hilal H Muhammed; 08.05.2018