用 jq 解析和转换 JSON

用 jq 的过滤表达式从 JSON 中提取值、筛选数组、重排输出——JSON 时代的 sed/awk。

Linuxjq JSON 处理解析JSON命令行低风险
执行 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.json

02作用说明

jq 读取 JSON 并应用过滤表达式:.foo.bar 深入嵌套对象,.[] 遍历数组,过滤器内部还可以像 shell 管道一样串联变换。-r 输出原始字符串(去掉 JSON 引号),结果可直接喂给其他命令;--slurp 与 -c 则处理多文档流。它是 curl API 与 shell 脚本之间的标准粘合剂——curl ... | jq '.data[].id' 可以替代十几行 Python。

03风险

风险低风险
使用条件jq (sudo apt install jq / sudo dnf install jq)
!注意: 命令行上的 jq 过滤表达式若不加引号会被 shell 吃掉——请始终用单引号包裹表达式,双引号包裹的 '.items[]' 可能发生通配符展开。

04撤销

✓无需撤销——该命令不会改变持久状态。

05来源

  • jq README
    jq (GitHub) · community · 2026-09-17
    依据: Describes jq as a lightweight command-line JSON processor with a filter-based language.
  • jq(1) — Linux man page
    Ubuntu Manpages · technical · 2026-09-17
    依据: jq man page: 'jq - Command-line JSON processor' documenting filters, field access .foo, iteration .[], and -r raw output.

最后验证: 2026-09-17 · 分类: 开发者