用Groovy中的jsonbuilder替换json中的版本

时间:2019-03-12 01:48:41

标签: jenkins groovy jenkins-pipeline jenkins-groovy

如何在json文件“ deploy.json ”中将版本从“ 1.0.2 ”替换为“ 2.6.5 ”使用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"
}

0 个答案:

没有答案