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

如何通过jq从含数组的JSON中提取指定id和name对象

用jq提取嵌套JSON中的所有id和name对象

没问题,这需求用jq的递归遍历功能就能轻松实现,直接上解决方案:

核心jq命令

jq '.. | select(.name and .id) | {name, id}' your_source.json

命令解释

我们一步步拆解这个命令的作用:

  • ..:递归遍历JSON结构里的每一个节点,不管是顶层的Automotive,还是嵌套在categories数组里的子分类,都能被遍历到。
  • select(.name and .id):只筛选出同时包含name和id属性的对象,确保我们只拿到需要的分类节点,不会误选其他无意义的元素。
  • {name, id}:从筛选出的对象里提取name和id字段,生成只包含这两个属性的新对象,完全符合你要的输出格式。

测试输出

用你提供的JSON源文件执行这个命令后,会得到如下结果(完整结果包含所有分类,以下为部分示例):

{ "name": "Automotive", "id": "1" }
{ "name": "Auto Body Styles", "id": "1.1" }
{ "name": "Commercial Trucks", "id": "1.1.1" }
{ "name": "Convertible", "id": "1.1.2" }
{ "name": "Coupe", "id": "1.1.3" }
{ "name": "Auto Buying and Selling", "id": "1.2" }
// ... 剩余所有分类对象都会按此格式输出

如果你的JSON内容是通过标准输入传递的(比如管道),可以这样用:

cat your_source.json | jq '.. | select(.name and .id) | {name, id}'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:57:38