优雅的查看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文件,但是里面的格式不规范。我们需要查看里面的内容:
像cxk?
使用jq之后就不一样了,'.'表示当前输入的内容:
wyf

jq '.foo[:1]' / 索引切片

可以看出jq支持管道,也可以直接用文件,命令:jq '.' type73.json , 可以通过'.key'来获取这个key的内容,如果key 的值是数组,可以用索引值来指定某个值,也支持切片操作。如:
1240

jq '.foo, .bar | .[1]' /多个过滤,管道操作

使用 ','可以同时利用多个表达式过滤,支持管道操作,jq '.A | .B':以前一个的输出作为后一个的输入。如:
1240

jq '[.foo[1], .bar[1]]' 构建新数组

1240

利用 []可以将不同key下的值构建一个新的输出

jq '{new_f: .foo, new_b: .bar}' 构建新对象

1240

jq '[.foo[1], .bar[1]]' > filter.json将过滤后的数据保存

利用 > 将数据转到新的文件里:
1240

内置的操作和函数

jq内置有一些运算操作符支持加减乘除等,和一些内置函数,使之更灵活和强大。

加减乘除

注意加减乘除的需要类型一样,同样是数组,或者标量,或者对象:
1240

map / map_values

可以用map对每个数组的元素进行操作,map_values用于对象的values操作:
1240

删除某个元素

可以通过key,删除,也可以指定索引值删除: jq '.one.sn | del(.[1])' type73.json, 程序运行后是返回的删除后的内容
1240

挑选指定条件内容

select(boolean_expression) 通过布尔表达式挑选指定内容
1240

注意事项

jq不能正确解析,key 值为 数字字符串的内容。比如: {“1”: 123, “2”: “abc”},jq '.2' file.json 就不能正确的解析。

最后

jq还有许多内置函数, 还支持if,else条件语句,能作比较,支持一些数学运算,正则表达式等等。总之很实用也强大,这里写不完。更多的可以去官网查看。很详细的!


参考

https://stedolan.github.io/jq/manual/#ConditionalsandComparisons

转载于:https://www.cnblogs.com/huanping/p/10801199.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值