首页 > 解决方案 > Jenkinsfile 管道构造 JSON 对象并写入文件

问题描述

我想构造一个 JSON 对象并将内容写入文件。

最初我受此启发并尝试:

def data = [
        a:"test: ${myVar}"
    ]
    writeJSON(file: 'message1.json', json: data)

但这失败了:

无法为 WriteJSONStep 实例化 {file=message1.json, json={a=test}}(file: String, json: JSON{}, pretty?: int): java.lang.UnsupportedOperationException: 必须指定 $class 的实现接口 net.sf.json.JSON

所以接下来我尝试了:

def data = readJSON text: '{}'
data.a = "test: ${myVar}"
writeJSON(file: 'message1.json', json: data, pretty: 4)

现在构建通过了,但文件的内容如下所示:

{
     "a":     {

        "bytes":         [

            114,

            101,

            108,

            101,

            97,

            115,

            101

            50

        ],

        "strings":         [

            "test: ",

            ""

        ],

        "valueCount": 1,

        "values": ["v1.0.2"]

    }
}

而我的意图是{"a": "test: v1.0.2"}

我的最终目标是我想动态构造一个 JSON 对象,使用一些动态数据设置一些属性,然后编写 JSON 文件。

是否有一些语法可用于将值分配为字符串,而不是某些字节。

标签: jenkinsgroovyjenkins-pipeline

解决方案


似乎对此的一种解决方案是更改添加到地图的代码以指定as String

def data = readJSON text: '{}'
data.a = "test: ${myVar}" as String
writeJSON(file: 'message1.json', json: data, pretty: 4)

推荐阅读