Skip to content

jq 使用说明

jq 是一个 轻量级且灵活的命令行 JSON 处理工具。 它可以用于 格式化、查询、过滤、修改、合并 JSON 数据,是后端开发、前端调试、日志分析和 API 调用中常用的利器。

相比 grepawk 等传统文本工具,jq 专门面向 JSON,支持 JSON 的结构化操作。


✨ 功能特点

  • 格式化输出:美化 JSON,使其更易读
  • 字段提取:快速获取 JSON 中的某个字段或嵌套值
  • 条件过滤:对数组、对象进行过滤、筛选
  • 数据转换:修改字段值,构造新 JSON
  • 脚本支持:支持复杂的 JSON 处理表达式

🔧 安装

Debian / Ubuntu

bash
sudo apt install jq

CentOS / RHEL

bash
sudo yum install jq

macOS (Homebrew)

bash
brew install jq

验证安装

bash
jq --version

🚀 基本用法

1. JSON 格式化

bash
echo '{"name": "hunter.l", "sex": "男", "city": "西安"}' | jq

输出:

json
{
  "name": "hunter.l",
  "sex": "男",
  "city": "西安"
}

2. 获取字段值

bash
echo '{"name": "hunter.l", "sex": "男", "city": "西安"}' | jq ".name"

输出:

json
"hunter.l"

3. 访问嵌套字段

bash
echo '{"user": {"name": "hunter.l", "info": {"age": 25, "city": "西安"}}}' | jq ".user.info.city"

输出:

json
"西安"

4. 处理数组

bash
echo '[{"id":1,"name":"张三"},{"id":2,"name":"李四"}]' | jq ".[].name"

输出:

json
"张三"
"李四"

获取第二个元素:

bash
echo '[{"id":1,"name":"张三"},{"id":2,"name":"李四"}]' | jq ".[1]"

输出:

json
{
  "id": 2,
  "name": "李四"
}

5. 条件过滤

获取 id=2 的对象:

bash
echo '[{"id":1,"name":"张三"},{"id":2,"name":"李四"}]' | jq '.[] | select(.id==2)'

输出:

json
{
  "id": 2,
  "name": "李四"
}

6. 修改字段值

bash
echo '{"name":"张三","city":"西安"}' | jq '.city="北京"'

输出:

json
{
  "name": "张三",
  "city": "北京"
}

7. 构造新 JSON

bash
echo '{"name":"张三","city":"西安"}' | jq '{username: .name, location: .city}'

输出:

json
{
  "username": "张三",
  "location": "西安"
}

8. 读取文件

bash
jq '.' data.json

🖥️ 常用参数

参数说明
.选择整个 JSON
.key选择对象中的某个字段
.[n]选择数组中的第 n 个元素(0 起始)
select(cond)条件过滤
map(expr)映射数组
add数组求和或字符串拼接
length获取数组或对象长度

📊 使用场景

  1. 日志分析:从 JSON 日志中提取关键字段
  2. API 调试:格式化 curl 返回的 JSON 数据
  3. 运维脚本:结合 jq 自动化处理 JSON 配置
  4. 数据清洗:批量修改或提取 JSON 数据

🔗 参考资料

Released under the MIT License.