jq:命令行处理 JSON 的神器_jq读取json

boyanx3个月前技术教程6

原文链接:「链接」

在当今以数据为核心的时代,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 的力量!

标签: jq官网

相关文章

太白湖新区引进20名优秀青年人才,28日起报名

济宁太白湖新区事业单位计划引进20名优秀青年人才。3月28日9:00至4月3日16:00报名。此次引进的优秀青年人才范围为全日制博士研究生;42所一流大学建设高校全日制本科及以上毕业生,98所一流学科...

农业银行:进取系列每季开放式理财管理计划(产品销售代码:JQ120001)提前终止

6月9日,农业银行发布公告称,该行决定对“进取”系列每季开放式理财管理计划(产品销售代码:JQ120001)进行提前终止,产品到期日为2025年6月12日,到期资金预计将在到期日后3个工作日内兑付返还...

从jQuery到React:前端开发的十年变革史

再不做这一步,你的前端技能会贬值一整年。jQuery曾统治网页,全球80%站点靠它混饭。IE6时代,写三五行就能让按钮变色,开发者省下无数加班。StackOverflow 2012年的投票里,jQue...

2019甘肃网民网络安全感满意度调查活动正式启动

您的手机钱包安全吗?您的维权举报渠道畅通吗?您的上网体验好吗?当前,网络安全问题日渐突出、形势日益严峻:人们在享受各种生活便利和沟通便捷的同时,网络攻击、病毒传播、垃圾邮件等迅速增长;利用网络进行诈骗...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。