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

如何用JQ提取attributes字段中的唯一嵌套JSON键?

解决JQ提取嵌套字段唯一键时的null报错问题

错误原因

你遇到的报错是因为部分JSON对象的attributes字段为null或者根本不存在,直接对null调用keys方法就会触发"null has no keys"的错误。

正确命令

方法1:先过滤有效对象(推荐)

jq -r '[.[] | select(.attributes != null) | .attributes | keys[]] | unique | sort' test.json

各部分作用:

  • .[]:遍历test.json中的每一个顶层JSON对象
  • select(.attributes != null):只保留attributes字段存在且不为空的对象
  • .attributes | keys[]:提取这些有效对象的attributes下的所有键
  • []:把所有提取到的键汇总成数组
  • unique | sort:对数组去重并排序,得到最终的唯一键数组

方法2:用错误抑制符简化写法

如果不想写过滤逻辑,也可以用?操作符自动跳过null或不存在的字段:

jq -r '[.[] | .attributes? | keys[]?] | unique | sort' test.json
  • .attributes?:如果当前对象没有attributes字段或其值为null,则返回null并跳过后续操作
  • keys[]?:如果前面的结果是null,则跳过提取键的操作,避免报错

验证结果

执行上述命令后,会输出去重并排序后的唯一键数组,格式如你期望的["a","b","c","d"]。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 15:50:39