如何用jq或Bash工具从JSON中筛选running状态对应的href
如何用jq从JSON数据中提取状态为running的条目对应的href值
没问题,用jq就能轻松搞定这个需求,我给你详细说下操作步骤:
核心命令
直接用这条jq命令就能筛选出你要的href值:
jq '.relations.link[] | select(.attributes[]? | select(.name == "state").value == "running") | .href'
命令解释
咱们拆解下这条命令的作用,方便你理解:
.relations.link[]:遍历JSON里relations对象下的link数组,逐个处理每个元素select(.attributes[]? | select(.name == "state").value == "running"):.attributes[]?:处理数组中可能没有attributes字段的元素(比如你给出的前两个link条目就没有),?符号避免因为缺少字段报错- 接着筛选出
attributes里name为state且value等于running的条目
| .href:最后提取符合条件的条目里的href字段值
实际使用示例
如果你的curl命令返回的是题目里的JSON数据,直接把curl输出通过管道传给jq命令就行:
curl your-api-endpoint | jq '.relations.link[] | select(.attributes[]? | select(.name == "state").value == "running") | .href'
运行后就会输出你想要的结果:
"https://vro:8281/vco/api/workflows/6433f56f-13b7-46a7-a9ec-a3e38c7ff69d/executions/b28832cb-2a97-4ec8-848f-35fec95eb867/"
如果有多个状态为running的条目,这条命令会输出所有对应的href值,每个值单独占一行。
内容的提问来源于stack exchange,提问作者arifisik
相关产品推荐
相关产品推荐

