原文链接:「链接」
在当今以数据为核心的时代,JSON(JavaScript Object Notation) 成为前后端、系统通信、日志分析中的通用格式。无论是调用接口查看返回值、分析日志中的结构化数据,还是自动化脚本处理接口返回结果,我们都离不开对 JSON 的解析。而在 Linux/Unix 命令行环境中,有一个高效、强大且优雅的工具,它就是——jq。
一、什么是 jq?
jq 是一个用于命令行中解析、查询、转换 JSON 数据的轻量级工具。它就像 sed 用于文本处理,awk 用于结构化文本处理一样,jq 是 JSON 的“命令行之刃”。
官网:
https://stedolan.github.io/jq/
支持 JSON 的读取、格式化、美化、提取、筛选、修改、重构等操作
完全支持函数式编程语法
二、安装 jq
不同系统的安装方式如下:
# Ubuntu / Debian
sudo apt install jq
# CentOS / RHEL
sudo yum install jq
# macOS (使用 Homebrew)
brew install jq
# Windows
# 直接下载 jq.exe 添加到系统环境变量
三、jq 基本用法
1.示例 JSON 文件 data.json:
pdsyw@pdsyw1024:~/Desktop$ vim data.json
pdsyw@pdsyw1024:~/Desktop$ cat data.json
{
"name": "Alice",
"age": 30,
"skills": ["Linux", "Python", "jq"],
"address": {
"city": "Beijing",
"zip": "100000"
}
}
2.美化输出(格式化 JSON)
pdsyw@pdsyw1024:~/Desktop$ cat data.json | jq .
3.获取字段值
pdsyw@pdsyw1024:~/Desktop$ jq '.name' data.json
4.提取嵌套字段
pdsyw@pdsyw1024:~/Desktop$ jq '.address.city' data.json
5.遍历数组
pdsyw@pdsyw1024:~/Desktop$ jq '.skills[]' data.json
四、进阶用法
1.筛选数组对象
假设有如下数组:
pdsyw@pdsyw1024:~/Desktop$ vim people.json
pdsyw@pdsyw1024:~/Desktop$ cat people.json
[
{ "name": "Tom", "age": 20 },
{ "name": "Jerry", "age": 32 },
{ "name": "Lucy", "age": 25 }
]
2.提取 age > 25 的人:
pdsyw@pdsyw1024:~/Desktop$ jq '.[] | select(.age > 25)' people.json
3.修改字段值
pdsyw@pdsyw1024:~/Desktop$ jq '.age = 35' data.json
4.删除某个字段
pdsyw@pdsyw1024:~/Desktop$ jq 'del(.skills)' data.json
5.多字段提取
pdsyw@pdsyw1024:~/Desktop$ jq '{username: .name, city: .address.city}' data.json
五、配合 API 使用
最常见的场景是配合 curl 使用,处理接口返回值:
pdsyw@pdsyw1024:~/Desktop$ curl -s https://api.github.com/users/octocat | jq '.name'
六、实用技巧总结
操作 | jq 示例 |
格式化 JSON | jq . |
提取字段 | jq '.key' |
数组遍历 | jq '.array[]' |
筛选对象 | jq 'select(.age > 30)' |
重构结构 | jq '{name, age}' |
多字段组合 | jq '{n: .name, c: .address.city}' |
删除字段 | jq 'del(.key)' |
修改字段 | jq '.age = 40' |
七、写在最后
无论你是开发人员、运维工程师、数据分析师还是自动化脚本爱好者,jq 都是你在处理 JSON 数据时不可多得的利器。 它简单易用,却又功能强大,值得每一位命令行用户掌握。
用 jq 做 JSON 的主人,不再被接口返回值折磨。如果你觉得这篇文章对你有帮助,欢迎点赞、在看、分享给更多朋友,一起掌握 jq 的力量!