用 jq 解析和转换 JSON
用 jq 的过滤表达式从 JSON 中提取值、筛选数组、重排输出——JSON 时代的 sed/awk。
执行 jq '.field' file.json 提取字段值,执行 jq '.items[].name' 遍历数组元素,加 -r 输出不含引号的原始字符串。
01命令
命令
$ curl -s https://api.github.com/repos/torvalds/linux | jq '.stargazers_count, .description'
jq -r '.items[].name' data.json02作用说明
jq 读取 JSON 并应用过滤表达式:.foo.bar 深入嵌套对象,.[] 遍历数组,过滤器内部还可以像 shell 管道一样串联变换。-r 输出原始字符串(去掉 JSON 引号),结果可直接喂给其他命令;--slurp 与 -c 则处理多文档流。它是 curl API 与 shell 脚本之间的标准粘合剂——curl ... | jq '.data[].id' 可以替代十几行 Python。
03风险
!注意: 命令行上的 jq 过滤表达式若不加引号会被 shell 吃掉——请始终用单引号包裹表达式,双引号包裹的 '.items[]' 可能发生通配符展开。
04撤销
✓无需撤销——该命令不会改变持久状态。
05来源
- jq README依据: Describes jq as a lightweight command-line JSON processor with a filter-based language.
- jq(1) — Linux man page依据: jq man page: 'jq - Command-line JSON processor' documenting filters, field access .foo, iteration .[], and -r raw output.
最后验证: 2026-09-17 · 分类: 开发者