JSON
是前端编程经常用到的格式,对于PHP
或者Python
,解析JSON
都不是什么大事,尤其是PHP
的json_encode
和json_decode
,干的相当的漂亮。Linux
下也有处理处理JSON
的神器:jq
格式化json
1 2
| $ curl http://ip.taobao.com/service/getIpInfo.php?ip=202.106.0.20 2>/dev/null {"code":0,"data":{"country":"\u4e2d\u56fd","country_id":"CN","area":"\u534e\u5317","area_id":"100000","region":"\u5317\u4eac\u5e02","region_id":"110000","city":"\u5317\u4eac\u5e02","city_id":"110100","county":"","county_id":"-1","isp":"\u8054\u901a","isp_id":"100026","ip":"202.106.0.20"}}
|
这样的数据大家看起来是不是非常的头疼,以前都是通过在线JSON
格式化工具做的.
jq
就可以检查JSON
的合法性,并把JSON
格式化成更友好更可读的格式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| $ curl http://ip.taobao.com/service/getIpInfo.php?ip=202.106.0.20 2>/dev/null | jq { "code": 0, "data": { "country": "中国", "country_id": "CN", "area": "华北", "area_id": "100000", "region": "北京市", "region_id": "110000", "city": "北京市", "city_id": "110100", "county": "", "county_id": "-1", "isp": "联通", "isp_id": "100026", "ip": "202.106.0.20" } }
|
现在是不是看着舒服多了,可阅读性明显增加了
获取value
获取value
类似python
,根据key
获取value
1 2 3 4 5 6 7 8
| $ curl http://ip.taobao.com/service/getIpInfo.php?ip=202.106.0.20 2>/dev/null | jq '.code' 0 curl http://ip.taobao.com/service/getIpInfo.php?ip=202.106.0.20 2>/dev/null | jq '.data.country_id' "CN" //嵌套解析 $ curl http://ip.taobao.com/service/getIpInfo.php?ip=202.106.0.20 2>/dev/null | jq '.codes' null //解析不存在的元素,会返回null
|
内建函数
jq
还有一些内建函数如 key
,has
key获取JSON中的key元素
1 2 3 4 5 6 7 8
| $ curl http://ip.taobao.com/service/getIpInfo.php?ip=202.106.0.20 2>/dev/null | jq 'keys' [ "code", "data" ] ``` ## has判断是否存在某个key
|
$ curl http://ip.taobao.com/service/getIpInfo.php?ip=202.106.0.20 2>/dev/null | jq ‘has(“data”)’
true
$ curl http://ip.taobao.com/service/getIpInfo.php?ip=202.106.0.20 2>/dev/null | jq ‘has(“datas”)’
false
`
###jq官网
###jq-github
上一篇:ELKStack实战之Elasticsearch [ 一 ]
下一篇:HTTP 请求方法