答案是jq命令行工具是Linux下处理JSON数据的首选,因其专为JSON设计、语法灵活、性能优异且能无缝集成到shell管道中。它支持从基础字段提取到复杂的数据过滤、转换和重构,如使用select过滤数组、map变换元素、if-then-else条件赋值等,广泛应用于API响应解析、日志处理和自动化脚本,显著提升数据处理效率。

在Linux环境中处理JSON数据,最直接、最有效且几乎是唯一的“正确”姿势,就是拥抱
jq
要开始使用
jq
sudo apt install jq
sudo yum install jq
假设我们有一个
data.json
{
"name": "Alice",
"age": 30,
"isStudent": false,
"courses": [
{"title": "Math", "credits": 3},
{"title": "Physics", "credits": 4}
],
"address": {
"street": "123 Main St",
"city": "Anytown"
}
}最基础的操作,提取某个字段:
cat data.json | jq .name
"Alice"
如果你想要一个不带引号的原始字符串,加上
-r
cat data.json | jq -r .name
Alice
访问嵌套字段:
cat data.json | jq .address.city
"Anytown"
处理数组,提取所有课程的标题:
cat data.json | jq '.courses[].title'
"Math"
"Physics"
甚至可以创建新的JSON结构,比如只想要名字和年龄:
cat data.json | jq '{userName: .name, userAge: .age}'{
"userName": "Alice",
"userAge": 30
}这只是冰山一角,但足以让你感受到
jq
jq
说实话,在我刚接触Linux处理JSON的时候,也曾尝试过
grep
awk
jq
jq
它的设计哲学就非常符合Unix工具的精髓——小而精,专注于一件事并做到极致。它只处理JSON,但处理得极其出色。它的语法虽然初看有点像JavaScript,但实际上更像是一种声明式的查询语言,你告诉它你想要什么,它就能给你变出来。
jq
if-else
.[]
jq
Easily find JSON paths within JSON objects using our intuitive Json Path Finder
30
它的性能表现也相当不错。对于几MB、几十MB甚至上百MB的JSON文件,
jq
jq
grep
最后,也是我最喜欢的一点,
jq
curl
xargs
sed
jq
jq
jq
比如,我们想从之前的
data.json
cat data.json | jq '.courses[] | select(.credits > 3) | .title'
.courses[]
courses
select(.credits > 3)
credits
.title
"Physics"
我们还可以用
jq
cat data.json | jq '.courses | map({courseTitle: .title, courseCredits: .credits})'map()
courseTitle
courseCredits
[
{
"courseTitle": "Math",
"courseCredits": 3
},
{
"courseTitle": "Physics",
"courseCredits": 4
}
]有时候,我们需要处理的数据可能存在缺失值,或者需要根据某些条件动态地选择输出。
jq
if-then-else
cat data.json | jq '. + {status: (if .age < 25 then "Young" else "Adult" end)}'.
+
if-then-else
.age
status
{
"name": "Alice",
"age": 30,
"isStudent": false,
"courses": [
{
"title": "Math",
"credits": 3
},
{
"title": "Physics",
"credits": 4
}
],
"address": {
"street": "123 Main St",
"city": "Anytown"
},
"status": "Adult"
}这些例子仅仅是抛砖引玉,
jq
group_by
add
length
jq
map
select
jq
将
jq
实际应用场景:
curl
jq
curl -s https://api.github.com/repos/stedolan/jq | jq -r .stargazers_count
以上就是如何在Linux中处理JSON Linux jq解析工具入门的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号