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
- 使用jq命令后 查看起来方便多了
以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"
}
]
}
- 显示json文件
或者
cat testfile| jq
-
指定key查询
-
嵌套查询
-
keys:获取JSON中的key信息
-
标准化输出,即不格式化为带引号的json 字符串
-
has(key):判断是否存在某个key
-
length:查看输出长度或个数