优雅的查看json文件
前面#
jq是一个轻量级但是贼灵活的命令行json处理器.jq在json数据处理中很有用就像用awk处理文本一样。jq最简单的应用应该是解析json文件格式化输出数据吧。有些网站如:json.cn 就是用来在线解析json以一个友好的格式返回给用户查看。解析网站对于简单的json数据使用较为良好,不过对于比较的大的文件就不行了。毕竟你打要开json文件,然后复制到网站上,如果文件太大,还可能卡顿一下。不过jq很强大,你可以设置各种命令,返回你想要的结果。本文简单讲解下jq比较常用的操作。
安装#
jq支持Linux,OS X,Windows等系统。Debian和Ubuntu安装用sudo apt-get install jq
就行了。其它的系统安装可以去查看:https://stedolan.github.io/jq/download/
基本使用#
jq '.'
#
这里我用的系统是Ubuntu 16。现在这有一个json文件,但是里面的格式不规范。我们需要查看里面的内容:
使用
jq
之后就不一样了,'.'
表示当前输入的内容:
jq '.foo[:1]'
/ 索引切片#
可以看出jq
支持管道,也可以直接用文件,命令:jq '.' type73.json
, 可以通过'.key'
来获取这个key的内容,如果key 的值是数组,可以用索引值来指定某个值,也支持切片操作。如:
jq '.foo, .bar | .[1]'
/多个过滤,管道操作#
使用 ','
可以同时利用多个表达式过滤,支持管道操作,jq '.A | .B'
:以前一个的输出作为后一个的输入。如:
jq '[.foo[1], .bar[1]]'
构建新数组#

利用 []
可以将不同key下的值构建一个新的输出
jq '{new_f: .foo, new_b: .bar}'
构建新对象#

jq '[.foo[1], .bar[1]]' > filter.json
将过滤后的数据保存#
利用 >
将数据转到新的文件里:
内置的操作和函数#
jq
内置有一些运算操作符支持加减乘除等,和一些内置函数,使之更灵活和强大。
加减乘除#
注意加减乘除的需要类型一样,同样是数组,或者标量,或者对象:
map / map_values#
可以用map对每个数组的元素进行操作,map_values用于对象的values操作:
删除某个元素#
可以通过key,删除,也可以指定索引值删除:jq '.one.sn | del(.[1])' type73.json
, 程序运行后是返回的删除后的内容
挑选指定条件内容#
select(boolean_expression)
通过布尔表达式挑选指定内容
注意事项#
jq不能正确解析,key 值为 数字字符串的内容。比如: {“1”: 123, “2”: “abc”},jq '.2' file.json
就不能正确的解析。
最后#
jq还有许多内置函数, 还支持if,else条件语句,能作比较,支持一些数学运算,正则表达式等等。总之很实用也强大,这里写不完。更多的可以去官网查看。很详细的!
参考#
https://stedolan.github.io/jq/manual/#ConditionalsandComparisons
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· Apache Tomcat RCE漏洞复现(CVE-2025-24813)