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编程模型
不用纠结复杂概念,记住三个关键点:
- 过滤器是核心:每个jq命令都是一串过滤器,输入JSON经过过滤器处理后输出结果
.是当前元素:处理数组子元素时,.就代表数组里的单个对象- 管道串联逻辑:用
|把多个过滤器连起来,实现分步处理(比如先展开数组,再提取字段)
优质学习资源
- man jq:直接在终端查手册,Unix程序员最熟悉的方式,包含完整语法、内置函数和基础示例
- jq Cookbook:收集了大量生产场景的实操案例,从字段提取到数据转换,直接抄命令改参数就能用
- 本地交互式测试:拿自己的测试JSON数据,从简单过滤器开始试(比如先跑
jq '.items'看输出,再逐步加[]和字段提取),边试边调比看文档更快
内容的提问来源于stack exchange,提问作者iainmaoileoin
相关产品推荐
相关产品推荐

