如何用Groovy遍历DynamoDB嵌套JSON并填充Jenkins参数?
解决Groovy遍历DynamoDB嵌套JSON的编译错误与取值问题
问题分析
- 编译错误原因:你的JSON字符串存在语法错误,报错行显示
"test: {,正确格式应为"test": {——键名必须用双引号完整包裹,键与值之间的冒号不能遗漏引号。 - 遍历逻辑错误:DynamoDB返回的JSON外层是数组,解析后得到
List类型,原代码直接用key, value遍历数组会导致逻辑错误,无法正确获取嵌套的S值。
修正后的Groovy代码
import groovy.json.JsonSlurper def json = ''' [ { "test": { "S": "0" }, "dev": { "S": "1" }, "cert": { "S": "2" }, "prod": { "S": "-3" } } ] ''' def json_out = new JsonSlurper().parseText(json) // 遍历数组中的环境配置对象(此处仅一个) json_out.each { envConfig -> // 遍历每个环境的键值对 envConfig.each { envName, envDetail -> // 提取嵌套结构中"S"对应的取值 def envValue = envDetail.S println "环境名称: ${envName}, 对应值: ${envValue}" // 填充Jenkins参数的示例代码(需确保脚本有权限操作构建参数) // build.setParameter(envName, envValue) } }
关键说明
- JSON格式校验:确保所有键名、字符串值都用双引号包裹,结构符合标准JSON语法,这是解析成功的前提。
- 层级遍历:先处理外层数组,取出里面的环境配置对象;再遍历对象的每个键值对,通过
envDetail.S直接获取DynamoDB返回的字符串类型值。 - Jenkins参数填充:若要将值写入Jenkins参数,可使用
build.setParameter(参数名, 参数值)方法,需注意脚本需具备修改构建参数的权限。
内容的提问来源于stack exchange,提问作者Alfred Hitchkock
相关产品推荐
相关产品推荐

