Замените версию в json на jsonbuilder в Groovy - PullRequest
0 голосов
/ 12 марта 2019

Как заменить версию с " 1.0.2 " на " 2.6.5 " в файле json " deploy.json " с помощью groovy-скриптинга и содержание файла было предоставлено ниже.

{
  "versions": [
        {
            "version": "1.0.2",
            "conf": "replian"
        },
        {
            "version": "1.0.2",
            "conf": "hp"
        },
        {
            "version": "1.0.2",
            "conf": "shutoff"
        },
        {
            "version": "1.0.2",
            "conf": "spark"
        }
            ]
}

Я пробовал ниже, но получаю ошибку;

import groovy.json.JsonBuilder
import groovy.json.JsonSlurper

def content = """
{
  "versions": [
        {
            "version": "1.0.2",
            "conf": "replian"
        },
        {
            "version": "1.0.2",
            "conf": "hp"
        },
        {
            "version": "1.0.2",
            "conf": "shutoff"
        },
        {
            "version": "1.0.2",
            "conf": "spark"
        }
            ]
}"""

def slurped = new JsonSlurper().parseText(content)
def builder = new JsonBuilder(slurped) 
builder.content.versions.find{it.version}.version = "2.6.5"
println(builder.toPrettyString())

Вопрос: Только первая версия conf replian заменяется, когда я использую приведенный выше скрипт;

{
    "version": "2.6.5",
    "conf": "replian"
},
{
    "version": "1.0.2",
    "conf": "hp"
},
{
    "version": "1.0.2",
    "conf": "shutoff"
},
{
    "version": "1.0.2",
    "conf": "spark"
}

1 Ответ

1 голос
/ 12 марта 2019

Использование сбор метод

import groovy.json.JsonBuilder
import groovy.json.JsonSlurper

def content = """
{
  "versions": [
        {
            "version": "1.0.2",
            "conf": "replian"
        },
        {
            "version": "1.0.2",
            "conf": "hp"
        },
        {
            "version": "1.0.2",
            "conf": "shutoff"
        },
        {
            "version": "1.0.2",
            "conf": "spark"
        }
            ]
}"""

def slurped = new JsonSlurper().parseText(content)
def builder = new JsonBuilder(slurped) 
builder.content.versions.collect{ it.version = '2.6.5' }
println(builder.toPrettyString())

выход

{
    "versions": [
        {
            "version": "2.6.5",
            "conf": "replian"
        },
        {
            "version": "2.6.5",
            "conf": "hp"
        },
        {
            "version": "2.6.5",
            "conf": "shutoff"
        },
        {
            "version": "2.6.5",
            "conf": "spark"
        }
    ]
}
...