You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Groovy中修改Jenkinsfile字典格式适配Jinja需求

解决方法

Groovy语法前置说明

Groovy里[key: value]本身就是**字典(Map)**的标准字面量写法,而{key: value}默认是闭包(不是字典),直接写会触发语法错误。如果非要用大括号定义字典,必须加as Map做类型转换。


场景1:修改代码中的字典写法为大括号格式

如果只是想把代码里的[]换成{},可以这么写(注意必须加as Map):

Dict = {
    1: {
        "key": "CI",
        "value": "yash"
    },
    2: {
        "key": "CI",
        "value": "ruben"
    }
} as Map

不过更推荐保留Groovy原生的[key: value]写法,避免和闭包语法混淆。

场景2:生成大括号包裹的JSON输出

如果你是想把结构转换成JSON对象(而非数组),分两种情况处理:

情况A:你的Dict已经是Groovy Map

你当前的代码Dict = [1: {...}, 2: {...}]本身就是Map,直接用JsonBuilder就能生成大括号包裹的JSON:

def Dict = [
    1: [
        "key": "CI",
        "value": "yash"
    ],
    2: [
        "key": "CI",
        "value": "ruben"
    ]
]
def builder = new groovy.json.JsonBuilder(Dict)
println builder.toString()
// 输出结果:{"1":{"key":"CI","value":"yash"},"2":{"key":"CI","value":"ruben"}}

情况B:你的Dict是List(导致JsonBuilder输出数组)

如果你的Dict实际是嵌套List(比如误写为[[1: ...], [2: ...]]),先把List转换成Map,再生成JSON:

// 原始List结构
def originalList = [
    [1: [key: "CI", value: "yash"]],
    [2: [key: "CI", value: "ruben"]]
]
// 转换为Map
def dict = originalList.inject([:]) { map, item -> map << item; map }
// 生成JSON
def builder = new groovy.json.JsonBuilder(dict)
println builder.toString()

内容的提问来源于stack exchange,提问作者Yash Kamdar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 19:22:45