Jenkins多分支流水线JSON解析报错:hudson.remoting.ProxyException
Jenkins多分支流水线JSON解析错误排查与解决
错误原因
- 重复解析导致格式冲突:
readJSON插件会直接将JSON文件内容解析为Groovy的Map/List对象,后续调用JsonSlurperClassic.parseText(json)时,这个Groovy对象会被转换为Groovy风格的字符串(如[key:value]而非标准JSON的{"key":"value"}),不符合JSON语法规范,引发解析错误。 - JSON文件语法不合法:提供的JSON文件中,最后一个键值对
"ReferenceTicket": "RITM0923008",末尾多了一个逗号,这是JSON语法不允许的(最后一个元素后不能有 trailing comma)。
解决方法
1. 移除重复解析步骤
直接使用readJSON返回的解析结果,无需再用JsonSlurperClassic二次解析。修改后的代码如下:
writeJSON(file: "hostname.json", json: env.config) def data = readJSON file: 'hostname.json' echo "Original Payload: ${data.software_maintainance_package_destination}"
2. 修正JSON文件语法错误
移除最后一个键值对末尾的逗号,修正后的JSON内容:
{ "software_maintainance_package_name": [ {"AgentName":"TrendMicro", "process":"Install", "OS":"linux"} ], "software_maintainance_package_destination": [ {"name":"InstanceIds", "detail":"186.12.45.23"} ], "siteName": "us-east-1", "siteEnvironment": "OnPrem", "ReferenceTicket": "RITM0923008" }
补充说明
readJSON是Jenkins Pipeline提供的专门用于解析JSON的步骤,返回的是可直接操作的Groovy对象,无需额外使用JsonSlurper系列工具。- 若需要将Groovy对象转为JSON字符串,可使用
writeJSON或JsonOutput.toJson()方法,而非直接将对象转为字符串。
内容的提问来源于stack exchange,提问作者shailysharma
相关产品推荐
相关产品推荐

