You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Groovy如何从JSON输出中提取指定的value字段值

解决方案:提取JSON数组中指定元素的value值

原代码存在的问题

  • sh命令未添加returnStdout: true参数,默认仅返回执行状态码,无法获取curl请求的输出内容
  • 接口返回的是JSON数组,直接访问json.value会报错,需遍历数组筛选目标元素
  • json_pp是格式化输出工具,对readJSON解析无必要,反而可能引入额外格式干扰

修正后的完整代码

// 获取接口返回的JSON原始内容,添加returnStdout: true捕获输出
def VALUES_BEFORE = sh script: """
    curl -X POST "http://node-01.xyz.com:32010/abc/def" \\
    -H "accept: application/json" \\
    -H "Content-Type: application/json" \\
    -d '{ "cell_ids": [${payload}] }'
""", returnStdout: true

// 解析JSON为Groovy列表对象,trim()去除输出前后空白避免解析异常
def jsonList = readJSON text: VALUES_BEFORE.trim()

// 筛选出def为"histro"的元素,提取对应的value值
def histroValue = jsonList.find { it.def == "histro" }?.value

// 输出结果,增加空值判断避免报错
if (histroValue) {
    echo "histro对应的value值:${histroValue}"
} else {
    echo "未找到def为histro的元素"
}

关键代码说明

  • returnStdout: true:确保sh命令返回curl的输出内容而非状态码
  • find { it.def == "histro" }:遍历JSON数组,匹配def字段为histro的元素
  • ?.安全导航操作符:避免找不到目标元素时调用value触发空指针异常
  • trim():清理输出内容前后的空白字符,保证JSON解析正常

内容的提问来源于stack exchange,提问作者user17058837

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 12:07:41