如何在Groovy中用JsonSlurper结合if/else获取指定stage的状态
解决方法:获取指定name的Stage状态
我来帮你搞定这个问题!你可以通过Groovy的内置方法快速定位到目标stage,然后提取它的状态值,这里有两种实用的实现方式:
方法一:用find快速定位(推荐)
这种方式直接从stages列表中筛选出name为stop-emu的stage对象,比遍历所有元素更高效:
def stageJson = new JsonSlurper().parseText(response?.content) // 精准匹配name为'stop-emu'的stage def stopEmuStage = stageJson.stages.find { it.name == 'stop-emu' } // 提取状态,同时处理找不到目标stage的情况避免空指针 def status = stopEmuStage ? stopEmuStage.status : 'NOT_FOUND' echo "stop-emu stage status: ${status}"
方法二:遍历过程中判断(适合需要额外处理其他stage的场景)
如果你需要在遍历所有stage的同时记录目标状态,可以在循环里加入判断逻辑:
def stageJson = new JsonSlurper().parseText(response?.content) def status = 'NOT_FOUND' stageJson.stages.each { stage -> echo(stage.toString()) // 匹配到目标stage时更新状态值 if (stage.name == 'stop-emu') { status = stage.status } } echo "stop-emu stage status: ${status}"
小提示
find方法会返回第一个匹配条件的元素,刚好满足你查找单个stop-emustage的需求- 加入
stopEmuStage ? ... : 'NOT_FOUND'的判断是为了防止找不到对应stage时触发空指针异常,你可以根据实际场景调整默认值
内容的提问来源于stack exchange,提问作者david
相关产品推荐
相关产品推荐

