jq 解析 JSON 别只会 cat:四招快速取字段、过滤和改格式
接口返回一长串 JSON 时,直接 cat 既看不清结构,也不好定位字段。用 jq 把“取字段、过滤、改格式”分开做,排查会快很多。下面四招覆盖日常调试的大多数场景。
一、只取需要的字段
不要把整个响应贴出来找字段,先点名要什么:
jq ‘.data.name’
一次取多个字段,可以用逗号连接,并用 -r 去掉引号,方便粘贴到工单或脚本里:
jq -r ‘.data.name, .data.status’
二、按条件过滤数组
接口返回列表时,先过滤再看结果,比肉眼翻页可靠得多:
jq ‘.items[] | select(.status == “failed”) | {id, msg: .error}’
只看失败项的 id 和报错信息,排障时先聚焦异常样本。条件可以组合,例如同时要求分数达标:
jq ‘.items[] | select(.score >= 60 and .status == “ok”)’
三、改成适合阅读或导入的格式
给人看时用紧凑输出,一行一条记录,日志里也更好 grep:
jq -c ‘.items[]’
要导入表格或做对比时,转成 TSV 更方便:
jq -r ‘.items[] | [.id, .status, .score] | @tsv’
需要把结果写回文件时,先输出到临时文件,确认无误再覆盖原文件,避免管道中途失败把原数据清空。
四、先校验,再怀疑业务逻辑
如果 jq 报错,先不要急着改代码。常见原因有三类:响应不是纯 JSON(前面多了日志或 HTML)、中途被截断、字段类型变了。先这样验证:
jq . response.json
能正常解析,再检查字段是否存在;解析失败,先看文件头尾,确认是不是登录页或报错页被当成了 JSON。生产日志里如含 token、密钥等敏感字段,贴出前先脱敏。
小结:取字段用点号路径,筛数据用 select,改格式用 -c 或 @tsv,出错先做格式校验。这套顺序固定下来,接口调试时就不用每次都从头翻整个 JSON 了。
- 点赞
- 收藏
- 关注作者
评论(0)