jq是mac终端中用于json解析、筛选和格式化的轻量级命令行工具,需通过homebrew安装,支持格式化、字段提取、条件过滤、结构重构等操作。

如果您在Mac终端中需要对JSON数据进行解析、筛选或格式化输出,则可以使用jq这一轻量级命令行JSON处理器。以下是实现该目标的具体操作方法:
一、安装jq工具
jq并非macOS系统默认预装工具,需通过包管理器安装。Homebrew是最常用的安装方式,确保已安装Homebrew后执行以下命令。
1、打开终端应用程序。
2、输入命令 brew install jq 并按回车执行安装。
3、安装完成后,运行 jq --version 验证是否成功输出版本号。
二、格式化原始JSON字符串
当接收到压缩或无缩进的JSON字符串时,jq可将其转换为易读的缩进格式,便于人工检查结构。
1、将JSON字符串通过管道传递给jq,例如:echo '{"name":"Alice","age":30}' | jq '.'。
2、若JSON内容保存在文件中,使用 jq '.' data.json 直接读取并格式化输出。
3、添加 -r 参数可输出原始字符串值(不带引号),适用于提取纯文本字段。
三、提取指定字段值
jq支持使用点号语法或方括号语法精准定位嵌套结构中的键值,适用于从API响应中抽取关键信息。
1、提取顶层字段:执行 echo '{"id":123,"status":"ok"}' | jq '.id' 输出数字123。
2、提取嵌套字段:对 {"user":{"profile":{"email":"test@example.com"}}} 执行 jq '.user.profile.email'。
3、处理数组元素:若JSON含数组如 {"items":[{"name":"A"},{"name":"B"}]},可用 jq '.items[].name' 逐行输出所有name值。
四、过滤与条件筛选
jq内置布尔逻辑和比较操作符,可在终端中完成类似数据库WHERE子句的数据筛选功能。
1、筛选满足数值条件的对象:对 [{"score":85},{"score":92},{"score":76}] 运行 jq '.[] | select(.score > 80)'。
2、匹配字符串内容:执行 jq 'map(select(.name | contains("li")))' users.json 提取name含"li"的所有对象。
3、组合多个条件:使用 and 或 or 连接表达式,例如 select(.active == true and .level == "admin")。
五、修改与重构JSON结构
jq不仅支持读取,还可通过赋值语法生成新结构,适用于清洗或适配不同接口要求的数据格式。
1、重命名字段:对 {"first_name":"Tom","last_name":"Lee"} 执行 jq '{firstName: .first_name, lastName: .last_name}'。
2、添加常量字段:运行 jq '. + {"processed":true,"source":"cli"}' 在原对象中插入固定键值对。
3、删除字段:使用减法操作符,如 jq 'del(.temp, .debug)' 移除指定键及其值。










