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

jq使用求助:JSON字段提取方法及学习资源推荐

jq 嵌套字段提取实操与学习建议

核心提取方法

jq的核心逻辑是流式管道处理JSON元素:.代表当前处理的元素,嵌套字段通过链式.访问,数组用[]展开。

假设你的JSON结构类似:

{
  "items": [
    {
      "id": "item_001",
      "device": {"id": "dev_001"},
      "ip": "10.0.0.1",
      "site": {"id": "site_001"}
    },
    {
      "id": "item_002",
      "device": {"id": "dev_002"},
      "ip": "10.0.0.2",
      "site": {"id": "site_002"}
    }
  ]
}

提取你需要的字段,直接用以下命令:

cat your_data.json | jq '.items[] | {item_id: .id, device_id: .device.id, ip: .ip, site_id: .site.id}'
  • .items[]:展开items数组,遍历每个子对象
  • |:管道传递,把每个子对象传给下一个过滤器
  • {...}:构造新对象,映射你需要的字段名和对应值

如果需要输出纯文本格式(比如CSV),可以改成:

cat your_data.json | jq -r '.items[] | [.id, .device.id, .ip, .site.id] | @csv'

-r参数用于输出原始字符串(不带JSON引号),@csv自动转成CSV格式。

快速理解jq编程模型

不用纠结复杂概念,记住三个关键点:

  1. 过滤器是核心:每个jq命令都是一串过滤器,输入JSON经过过滤器处理后输出结果
  2. .是当前元素:处理数组子元素时,.就代表数组里的单个对象
  3. 管道串联逻辑:用|把多个过滤器连起来,实现分步处理(比如先展开数组,再提取字段)

优质学习资源

  • man jq:直接在终端查手册,Unix程序员最熟悉的方式,包含完整语法、内置函数和基础示例
  • jq Cookbook:收集了大量生产场景的实操案例,从字段提取到数据转换,直接抄命令改参数就能用
  • 本地交互式测试:拿自己的测试JSON数据,从简单过滤器开始试(比如先跑jq '.items'看输出,再逐步加[]和字段提取),边试边调比看文档更快

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.07 10:03:09