Jenkins Groovy流水线中解析YAML变量,如何提取Item名称?
Jenkins Groovy流水线遍历YAML Map键名的解决方法
加载的YAML解析后,var1是一个Groovy Map结构,直接使用for (item in var1)遍历的是Map的Entry对象(包含键和对应的值),要提取item1这类名称,需要通过Entry的key属性获取。
方法一:使用for循环遍历Map Entry
configData = readYaml file: "var.yaml" def var1 = configData['var1'] for (entry in var1) { // 获取item1、item2、item3这类名称 def itemName = entry.key // 获取对应子项的列表 def subItems = entry.value println("处理项:${itemName}") // 可进一步遍历子项 subItems.each { subItem -> println("- 子项:名称=${subItem.name},类型=${subItem.type}") } }
方法二:使用Groovy风格的each方法
Groovy对Map提供了更简洁的遍历语法,直接解构键和值:
configData = readYaml file: "var.yaml" def var1 = configData['var1'] var1.each { itemName, subItems -> println("处理项:${itemName}") subItems.each { subItem -> println("- 子项:名称=${subItem.name},类型=${subItem.type}") } }
关键说明
之前的循环打印出完整Map条目,是因为Groovy中遍历Map时默认迭代的是Map.Entry实例,每个实例包含key(键名)和value(对应值)两个属性,直接打印Entry会输出其字符串形式,需要显式提取key来获取item1这类名称。
内容的提问来源于stack exchange,提问作者TheDESTROS
相关产品推荐
相关产品推荐

