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

Jenkins流水线中如何将Groovy对象转为JSON字符串传入函数?

Jenkins流水线JSON打印格式问题解析

现象原因

Jenkins的readJSON步骤会将输入的JSON数组转换为Groovy原生的List<Map>集合对象:

  • 直接打印数组元素时,Jenkins流水线环境(尤其是Scripted Pipeline模式)会自动对Groovy Map进行JSON序列化,输出标准JSON字符串;
  • 但当把Map传入自定义函数后,函数内的println是Groovy原生的打印逻辑,它会采用Groovy Map自身的字符串表示格式([key1:value1, key2:value2...])输出,而非自动转为JSON。

解决方法

方法1:使用Jenkins内置的writeJSON步骤

利用Jenkins提供的writeJSON步骤把Map序列化为JSON字符串,设置returnText: true直接返回字符串而不写入文件:

def printJsonElement(obj) {
    def jsonStr = writeJSON returnText: true, json: obj
    println jsonStr
}

方法2:使用Groovy原生JSON工具类

导入Groovy的JsonOutput类,手动将Map序列化为JSON字符串,还可选择格式化输出:

import groovy.json.JsonOutput

def printJsonElement(obj) {
    // 生成紧凑的JSON字符串
    def compactJson = JsonOutput.toJson(obj)
    println compactJson
    
    // 若需要格式化后的美观输出
    def prettyJson = JsonOutput.prettyPrint(compactJson)
    println prettyJson
}

注意事项

如果是在Declarative Pipeline中使用自定义函数,需要将函数逻辑包裹在script块内,确保Groovy代码能正常执行。

内容的提问来源于stack exchange,提问作者Chris F

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 17:18:11