linux JSON 解析命令 jq

653 阅读2分钟

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)]

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