ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

jq 安装与入门完整指南:在终端里用三步搞定 JSON 数据

jq 安装与入门完整指南:在终端里用三步搞定 JSON 数据 jq 安装与入门完整指南在终端里用三步搞定 JSON 数据【免费下载链接】jqCommand-line JSON processor项目地址: https://gitcode.com/GitHub_Trending/jq/jqjq 是一个轻量级的命令行 JSON 处理器你在终端里输入一个查询表达式它就能对输入过滤、转换、格式化 JSON 数据。它用 C 编写、零运行时依赖可以理解为sed、awk在 JSON 世界里的对应物。这篇指南带你完成 jq 安装并掌握字段提取、数组遍历与筛选、输出格式化这三个最常用能力。从一个真实的麻烦说起假设后端接口返回了一段嵌套较深的响应你只想确认第 2 个订单里的商品名。用grep只能拿到整行文本用编辑器则要在几百个字符里肉眼定位echo {orders:[{id:1},{id:2,item:keyboard}]} | grep item # 返回{orders:[{id:1},{id:2,item:keyboard}]} ← 整行原文没有变简单jq 的做法是写一条路径表达式直达目标echo {orders:[{id:1},{id:2,item:keyboard}]} | jq .orders[1].item # 输出keyboard一行命令只拿到你要的那个值。下面的内容会带你先把 jq 装好再逐个演示这类写法。一条命令先跑起来不想先折腾安装的话可以用任意一段合法 JSON 验证思路是否成立以已有 jq 为例echo {user:alice,tags:[ops,dev],active:true} | jq .输出会被自动缩进成可读的多行结构。这个能力——输入压成一行的 JSON输出变成带缩进、带引号的规范格式——就是 jq 最基本的格式化用途。jq 能帮你做什么三个核心用法字段提取用点号路径定位任意深度点号.从根对象取字段方括号[]取数组元素两者可以连续使用cat response.json | jq .data.items[0].id路径不存在时 jq 返回null而不是报错这让批量处理容错变得简单——你可以先查出来再决定怎么过滤掉null。数组遍历与筛选[]展开select过滤单独使用[]会把数组逐项展开输出配合select可以只保留满足条件的项jq .tags[] tags.json # ops # dev jq .orders[] | select(.amount 100) orders.json上例中select(.amount 100)保留了所有金额大于 100 的订单其余项被静默丢弃。这是处理几百条记录列表时最常用的组合。输出格式化三种常用开关jq 默认输出缩进格式另外两个开关覆盖另外两种常见需求jq -c .user data.json # 紧凑单行方便再喂给下游命令 jq -r .user data.json # 原始字符串去掉外层引号 jq -s . a.json b.json # 把多个输入合并成一个 JSON 数组-c适合脚本拼接-r适合把字段值直接当文本用-sslurp适合把若干文件汇总成一个数组再整体处理。各平台安装方式Linux 安装 jq各发行版都收录了 jq按你的包管理器选一条即可# Debian / Ubuntu sudo apt update sudo apt install jq # CentOS / RHEL / Rocky sudo dnf install jq # Arch sudo pacman -S jqmacOS 安装 jqbrew install jqWindows 安装 jq两种常用方式# 使用 Scoop scoop install jq # 或使用 Chocolatey choco install jq也可以直接从官方发布渠道下载 Windows 预编译可执行文件如jq-windows-amd64.exe解压后放入PATH即可。项目仓库的 sig 签名目录 中附带了各版本二进制文件的签名与 sha256 校验和下载后可以核对完整性。从源码构建需要最新特性或做二次开发时可以从源码编译依赖 libtool、make、autoconf 等构建工具git clone https://gitcode.com/GitHub_Trending/jq/jq cd jq ./autogen.sh ./configure make核心实现在 src/ 目录其中 src/jv.c 处理 JSON 值src/builtin.jq 内置了大部分内建函数。验证 jq 安装是否成功装完执行两条命令确认jq --version # jq-1.8.2版本号随版本不同 echo {ok: true} | jq .ok # true第一条能打印版本号说明二进制在PATH中可执行第二条能输出true说明解析、求值、输出链路全部正常。常见问题与排查思路查询结果全是null多数是路径写错字段名拼写、数组下标越界、漏了一层中间对象。先用jq keys看顶层有哪些字段再逐层缩小范围。报parse error输入不是合法 JSON。最常见原因是字符串里用了中文引号、多余尾逗号、单引号。先对输入单独跑一次jq empty快速定位问题文件。Windows 下提示不是内部或外部命令可执行文件所在目录没进PATH重启终端后把目录加进PATH即可。输出多了引号或想直接进 shell 管道加-r想把多条结果压成一行方便xargs之类工具消费加-c。想处理大量输入但内存吃紧优先用jq select(...)这类流式写法-s会先把所有输入读进内存数据量大时要留意。项目自带的 tests/ 目录收录了数百个真实用例program / 输入 / 期望输出三行一组遇到不确定的行为时在里面搜一下往往能直接找到对应示例比如 tests/jq.test 覆盖了绝大部分内建函数。下一步学什么入门之后建议按这条路径深入变换与聚合map、reduce、foreach把筛选升级为重塑结构传参与环境--arg、--argjson、--slurpfile让表达式能引用外部变量和文件模块化用import把常用查询拆成独立的.jq模块像 tests/modules/ 里的示例那样组织完整参考通读 docs/content/manual/manual.yml 整理的手册内容它按内建函数、过滤、输入输出选项分类适合作为速查表常备。小结jq 的价值在于把从嵌套 JSON 里取一个值这类操作压缩成一行可复用的命令提取靠点号路径遍历筛选靠[]加select输出形态靠-c/-r/-s三个开关切换。装好、验证、跑通第一条查询剩下的就是按真实数据多练几个查询——从解析 API 响应、精简配置文件这类高频任务开始会是最快的上手方式。【免费下载链接】jqCommand-line JSON processor项目地址: https://gitcode.com/GitHub_Trending/jq/jq创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表