Groovy在声明式流水线中将字符串转为Map列表并遍历取值的方法
声明式流水线字符串转List
你给出的字符串本身是合法的Groovy集合字面量,最快的转换方式直接调用Groovy内置的evaluate方法即可,无需自定义拆分、正则匹配逻辑。
代码示例
pipeline { agent any stages { stage('解析字符串并取值') { steps { script { // 替换为你的原始字符串 def originStr = '[[key_A:value1, key_B:value2, key_C:value3],[key_A:value4, key_B:value5, key_C:value6],[key_A:value7, key_B:value8, key_C:value9]]' // 一行完成转换为ArrayList<Map> def mapList = evaluate("return ${originStr}") // 遍历取值示例 mapList.each { item -> // 直接通过key取对应值 println "key_A: ${item.key_A}, key_B: ${item.key_B}, key_C: ${item.key_C}" } } } } } }
注意事项
- 如果Jenkins开启了脚本安全沙箱,首次运行需要在「管理Jenkins」-「进程内脚本批准」中同意
evaluate方法的调用签名 - 如果字符串内容不可信,担心恶意代码注入风险,可以先把原始字符串转为标准JSON格式(键值都套双引号,逗号分隔),再用
JsonSlurper解析,示例如下:import groovy.json.JsonSlurper // 先把原始字符串转为合法JSON def jsonStr = originStr.replaceAll(/([a-zA-Z0-9_]+):([a-zA-Z0-9_]+)/, '"$1":"$2"') def mapList = new JsonSlurper().parseText(jsonStr)
内容的提问来源于stack exchange,提问作者HC LW
相关产品推荐
相关产品推荐

