使用Groovy查询JSON文件时返回Null值问题求助
Jenkins Groovy脚本获取JSON数组所有值返回Null的解决方法
问题场景
在Jenkins Groovy脚本中执行以下代码时,返回Null响应:
def Services= sh(script: "curl -s --header \"PRIVATE-TOKEN: ${gittoken}\" ${url}| jq -r .${Servicename}[]", returnStdout: true)
对应的目标JSON结构如下:
{ "FrameWork1": [ "sample/sample1", "sample/sample2" ] }
需要获取FrameWork1数组的所有值,但上述代码返回Null;而指定数组索引(如[1])时,能正常获取对应位置的元素:
def Services= sh(script: "curl -s --header \"PRIVATE-TOKEN: ${gittoken}\" ${url}| jq -r .${Servicename}[1]", returnStdout: true)
问题原因
Groovy的字符串插值会解析表达式中的[],导致最终传递给jq的命令语法错误,无法正确识别数组遍历的指令。
解决方法
给jq的表达式外层加上单引号,避免Groovy解析方括号部分:
def Services= sh(script: "curl -s --header \"PRIVATE-TOKEN: ${gittoken}\" ${url}| jq -r '.${Servicename}[]'", returnStdout: true)
这样jq就能正确执行.FrameWork1[]的遍历逻辑,输出数组中的所有元素,每个元素单独占一行。
内容的提问来源于stack exchange,提问作者raghu
相关产品推荐
相关产品推荐

