如何将Python脚本返回的Dictionary转换为Groovy Pipeline中的Map?
解决方法
最简便的方式是让Python输出标准JSON格式,然后用Groovy流水线内置的readJSON步骤直接解析成Map,完全不用自己手动处理字符串。
步骤1:修改Python脚本输出JSON
把原来输出Python字典的代码改成输出JSON字符串,这样能避免Python字典语法(比如单引号、None)和Groovy不兼容的问题。示例代码:
import json # 生成你的目标字典 my_dictionary = {"name": "test", "count": 5, "enabled": True} # 输出标准JSON格式内容 print(json.dumps(my_dictionary))
如果脚本里有其他调试打印内容,把这些内容输出到标准错误流(stderr),避免干扰JSON输出:
import sys print("调试信息,不会被Groovy捕获", file=sys.stderr)
步骤2:Groovy流水线中解析JSON
用sh获取Python脚本的标准输出,再通过readJSON直接转成Groovy Map:
def jsonStr = sh(returnStdout: true, script: 'python pythonScript.py').trim() def desiredMap = readJSON text: jsonStr
之后你就能像普通Groovy Map一样使用desiredMap,比如desiredMap.name或者desiredMap["count"]。
内容的提问来源于stack exchange,提问作者Judith Black
相关产品推荐
相关产品推荐

