linux JSON 解析命令 jq

linux JSON 解析命令 jq

背景

前两天用终端curl请求服务端接口,返回json格式数据有一些问题,拿给开发看,开发说你怎么不转换成json格式,好看一点,正准备把json数据copy下来,粘贴到网页端的json工具,开发说直接在终端看就可以了!于是给我一个命令jq;可惜电脑上没有安装,最终还是在网页工具上看的! 下来后装好jq,发现真好用!

jq安装(mac):

brew install jq

使用方法:

  • 以请求kuaidi100网站的接口为例:
curl 'https://www.kuaidi100.com/query?type=zhongtong&postid=73127970405168&temp=0.4944945222451018&phone=' \
  -H 'Connection: keep-alive' \
  -H 'Pragma: no-cache' \
  -H 'Cache-Control: no-cache' \
  -H 'Accept: application/json, text/javascript, */*; q=0.01' \
  -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36' \
  -H 'X-Requested-With: XMLHttpRequest' \
  -H 'Sec-Fetch-Site: same-origin' \
  -H 'Sec-Fetch-Mode: cors' \
  -H 'Sec-Fetch-Dest: empty' \
  -H 'Referer: https://www.kuaidi100.com/' \
  -H 'Accept-Language: zh-CN,zh;q=0.9' \
  -H 'Cookie: csrftoken=ISbZgKm21TlR_QfgJKs3gbMbDNIEeoI3CMKiKoCd3EA; WWWID=WWWC70A63EBE66F2B396165EECFFD635077' \
  --compressed

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DKjA6tTV-1591716391017)(media/15917106909681/15917130206482.jpg)]在这里插入图片描述

  • 使用jq命令后
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uLbPtmWD-1591716391022)(media/15917106909681/15917131235486.jpg)]查看起来方便多了!
    查看起来方便多了

以json文件为例,看看jq的用法:

将以下json保存为testfile文件

{
  "result": true,
  "message": "成功",
  "status": "200",
  "data1": [
    {
      "kuaidinum": "606568155331",
      "orgCode": "755",
      "orgName": "始发地区域编码",
      "destCode": "755",
      "destName": "目的地/到达网点",
      "orgSortingCode": "始发分拣编码",
      "orgSortingName": "始发分拣名称",
      "destSortingCode": "目的分栋编码",
      "destSortingName": "目的分栋中心名称",
      "qrCode": "二维码",
      "orderNum": "快递公司订单号",
      "templateurl": "http://www.kuaidi100.com/XXX"
    }
  ],
  "data2": [
    {
      "kuaidinum": "606568155332",
      "orgCode": "755",
      "orgName": "始发地区域编码",
      "destCode": "755",
      "destName": "目的地/到达网点",
      "orgSortingCode": "始发分拣编码",
      "orgSortingName": "始发分拣名称",
      "destSortingCode": "目的分栋编码",
      "destSortingName": "目的分栋中心名称",
      "qrCode": "二维码",
      "orderNum": "快递公司订单号",
      "templateurl": "http://www.kuaidi100.com/XXX"
    }
  ]
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5A9VPM5L-1591716391024)(media/15917106909681/15917146742190.jpg)]

  • 显示json文件
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dQNwjBKx-1591716391026)(media/15917106909681/15917148122225.jpg)]

或者

cat testfile| jq
  • 指定key查询
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fDDujV65-1591716391027)(media/15917106909681/15917149160166.jpg)]

  • 嵌套查询
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Pv6s3hHS-1591716391033)(media/15917106909681/15917152186731.jpg)]

  • keys:获取JSON中的key信息
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qew0YqcK-1591716391035)(media/15917106909681/15917156351228.jpg)]

  • 标准化输出,即不格式化为带引号的json 字符串
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IDtM6jb0-1591716391037)(media/15917106909681/15917157761916.jpg)]

  • has(key):判断是否存在某个key
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LV8cTMzO-1591716391037)(media/15917106909681/15917158870285.jpg)]

  • length:查看输出长度或个数
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WczMow9c-1591716391039)(media/15917106909681/15917159774675.jpg)]

  • 官网 :https://stedolan.github.io/jq/

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
jq是一款命令行下处理JSON数据的工具,可以通过一系列的过滤器和表达式来转换JSON数据并输出需要的结果。安装jq可以使用不同的方法,例如在macOS上使用brew install jqLinux上使用wget命令下载jq,并设置可执行权限后移动到/usr/bin目录,CentOS上使用yum install jq,Ubuntu上使用apt命令安装jq。 在使用jq解析JSON字符串时,可以使用不同的表达式来获取想要的数据。例如,要获取根级别的key,可以使用jq -r keys[]命令,要获取下层成员的key,可以先使用jq .c命令获取"c"字段的内容,然后再使用jq -r keys[]命令来获取下层成员的key。 参考引用: :自己用shell处理json字符串的时候,开发输入格式的不通会导致解析字符串有问题,所以这里用到了jq工具 jq 是一款命令行下处理 JSON 数据的工具。其可以接受标准输入,命令管道或者文件中的 JSON 数据,经过一系列的过滤器(filters)和表达式的转后形成我们需要的数据结构并将结果输出到标准输出中。jq 的这种特性使我们可以很容易地在 Shell 脚本中调用它。 :获取串行json的key $ cat test.json { "a": "aa", "b": "bb", "c": { "dd": "ddd", "ee": "eee" } } //获取根级别的keys: $ jq -r keys[] test.json a b c 获取下层成员的keys: $ jq .c test.json | jq -r keys[] dd ee :因为最近要处理一些 JSON 数据格式,所以在经过一番搜索后 最终找到了 jq 这个很棒的工具。jq 允许你直接在命令行下对 JSON 进行操作,包括分片、过滤、转换等等。 让我们通过几个例子来说明 jq 的功能: 一、输出...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猜不透987872674

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值