jq 解析 JSON 别只会 cat:四招快速取字段、过滤和改格式

举报
yd_227538180 发表于 2026/11/03 10:20:09 2026/11/03
【摘要】 用 jq 取字段、按条件过滤、转换输出格式并先做 JSON 校验,四招快速定位接口问题,避免在长 JSON 里逐行翻找。

接口返回一长串 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 了。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。