LINUX.ORG.RU

Groovy: read json?

 , , ,


0

1

Всем привет!

Хочу проверять в json'ах количество VCPU. Вот пример json'а:

"Resources": {
    "VM1": {   
      "Properties": {
        "VCPUs": 4, 
        "Memory_MB": 6144
      }
    }, 
    "VM2": {
      "Properties": {
        "VCPUs": 2, 
        "Memory_MB": 2048
      }
    }
}

В чем проблема, в pipeline, что бы прочитать json кошерно использовать readJson, а он получает доступ к значению по ключу, т.е. если бы "Name" : "VM1"{, то и проблемы бы не было: println data.Resources.Name.VCPUs

НО json я не могу модифицировать (да и не хочу). Собственно вопрос, как закостылить какой workaround тут можно использовать?


Ответ на: комментарий от gadzira

Я такой юзал для добавления артефактов через плагин

Вот парсер, который я для себя немного подправил, можете сходить по ссылке в самом парсере, посмотреть какой у меня JSON. Можно перепилить под свои нужды, логика по сути одна

Только вот придется костыль этот апрувить постоянно в In-progress Scripts что-то там

import groovy.json.JsonSlurper

try {
    List<String> artifacts = new ArrayList<String>()
    def artifactsUrl = "https://raw.githubusercontent.com/Sudokamikaze/Jenkins-TWRP/master/device-targets.json"          
    def artifactsObjectRaw = ["curl", "-s", "-H", "accept: application/json", "-k", "--url", "${artifactsUrl}"].execute().text
    def jsonSlurper = new JsonSlurper()
    def artifactsJsonObject = jsonSlurper.parseText(artifactsObjectRaw)
    def dataArray = artifactsJsonObject.data
    for(item in dataArray){
        artifacts.add(item.text)
    } 
    return artifacts
} catch (Exception e) {
    print "There was a problem fetching the artifacts"
}

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от gadzira

А и ещё, это можно в пайп встроить

Вот пример https://gist.github.com/jgraglia/44a7443847cff6f0d87387a46c7bb82f

У меня на параметрах пайпы, в самом Jenkinsfile только что собирать и как, ну и прелюдии нужные, в ссылочке выше может найдете себе нужное

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.