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

使用jq筛选JSON列表中max=0的元素name遇问题求助

解决jq筛选JSON数组中特定元素的问题

我懂你这种卡壳的感觉——明明想筛出max等于0的元素的name,结果把不符合条件的也带出来了,肯定挺闹心的。咱们先拆解下你原来写法的问题,再给你靠谱的解决方案。

你原来写法的问题

你用的jq 'select(.[].max == 0)'逻辑不对:.[].max会先把数组里所有元素的max值都取出来,然后select是对整个数组做判断——只要数组里存在任意一个元素的max是0,整个数组就会被完整返回,这就是为啥你会拿到所有元素的原因。

正确的筛选写法

要实现只提取max等于0的元素的name,得按「遍历元素→筛选符合条件的→提取字段」的顺序来写:

1. 提取单个/多个独立的name值(每行一个)

jq '.[] | select(.max == 0) | .name' yourfile.json
  • .[]:把数组展开,逐个处理里面的每个对象元素
  • select(.max == 0):只保留max字段等于0的元素
  • .name:从筛选后的元素里提取name字段

2. 把结果保留在数组中(输出一个JSON数组)

如果希望结果是一个包含所有符合条件name的数组,可以加个中括号包裹:

jq '[.[] | select(.max == 0) | .name]' yourfile.json

举个实际例子

用你给出的JSON片段补充完整后:

[
  { "name": "PATCHING-vhdb", "ctm": "controlm-server", "available": "1", "max": 1, "workloadPolicy": "N/A" },
  { "name": "PATCHING-vhi", "ctm": "controlm-server", "available": "0", "max": 0 }
]

用第一种命令会输出:

"PATCHING-vhi"

用第二种命令会输出:

["PATCHING-vhi"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:41:11