linux命令 —— jq

linux 常用命令 —— jq

对于JSON格式而言,jq就像sed/awk/grep这些神器一样的方便,而也,jq没有乱七八糟的依赖,只需要一个binary文件jq,就足矣。

下面我们看下jq的使用

  1. 格式化JSON
root@silent:~/code/php/json$ cat json_raw.txt 
{"name":"Google","location":{"street":"1600 Amphitheatre Parkway","city":"Mountain View","state":"California","country":"US"},"employees":[{"name":"Michael","division":"Engineering"},{"name":"Laura","division":"HR"},{"name":"Elise","division":"Marketing"}]}

root@silent: cat json_raw.gz | jp .

json解析

如果json 格式不正确,使用jq时会报错

root@silent:~/code/php/json$ cat json_err.txt
{"name":"Google","location":{"street":"1600 Amphitheatre Parkway","city":"Mountain View","state":"California","country":"US"},"employees":[{"name":"Michael","division":"Engineering"}{"name":"Laura","division":"HR"},{"name":"Elise","division":"Marketing"}]

上面JSON中加粗和斜体部分,遗漏了一个逗号,所以这个JSON是错误的,jq轻松的可以轻松的检查出来:

  root@silent:~/code/php/json$ cat json_err.txt |jq .
  parse error: Expected separator between values at line 1, column 183
2. JSON parse

如上图json,jq如何解析JSON,根据key获取value?
如何根据key获取value?
可以使用 jq ‘.key’

  {
     "key_1":"value_1",
     "key_2":"value_2",
  }

jq解析

解析不存在的元素,会返回null

 echo '{"foo": 42, "bar": "less interesting data"}' | jq .nofoo
 null
3 JSON nested parse(嵌套解析)
 cat json_raw.txt | jq '.location.state'
 "California"
4 . JSON parse array
  cat json_raw.txt | jq '.employees[1].name'
  "Laura"
5. 内建函数

jq 还有一些内建函数如 key,has
key 是用来获取JSON中的 key 元素的:

cat json_raw.txt | jq ‘keys’
[
“employees”,
“location”,
“name”
]

has是用来是判断是否存在某个key:

cat json_raw.txt | jq ‘has(“name”)’
true
cat json_raw.txt | jq ‘has(“noexisted”)’
false

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值