1. 程式人生 > 其它 >Linux 中 json 格式化工具 jq

Linux 中 json 格式化工具 jq

安裝

jq屬於epel源,所以需要安裝epel

[root@master kubernetes]# yum install -y epel-release

安裝工具

[root@master kubernetes]# yum install -y jq

測試使用

測試資料

[root@master ~]# vim test
{ "name":"Tom", "age":18, "gender":"male", "phone":["110"], "speciality":null }
{ "name":"Jerry", "age":16, "gender":"female", "phone
":null,"speciality":["eat","sleep"] }

使用方法

1、普通轉換:相當於解析根節點 "."

[root@master ~]# jq < test
{
  "name": "Tom",
  "age": 18,
  "gender": "male",
  "phone": [
    "110"
  ],
  "speciality": null
}
{
  "name": "Jerry",
  "age": 16,
  "gender": "female",
  "phone": null,
  "speciality": [
    "eat",
    
"sleep" ] }

也可以寫根節點

[root@master ~]# jq . < test
{
  "name": "Tom",
  "age": 18,
  "gender": "male",
  "phone": [
    "110"
  ],
  "speciality": null
}
{
  "name": "Jerry",
  "age": 16,
  "gender": "female",
  "phone": null,
  "speciality": [
    "eat",
    "sleep"
  ]
}

2、解析屬性

[root@master ~]# jq .age < test
18 16
[root@master ~]# jq .name < test
"Tom"
"Jerry"

3、解析多個屬性

[root@master ~]# jq '[.name,.age,.speciality]' < test
[
  "Tom",
  18,
  [
    "sleep",
    "read"
  ]
]
[
  "Jerry",
  16,
  [
    "eat",
    "sleep"
  ]
]

4、測試解析列表索引

修改測試資料

[root@master ~]# vim test
{ "name":"Tom", "age":18, "gender":"male", "phone":["110"], "speciality":["sleep","read"] }
{ "name":"Jerry", "age":16, "gender":"female", "phone":null, "speciality":["eat","sleep"] }

解析

[root@master ~]# jq '.speciality[0]' < test
"sleep"
"eat"

[root@master ~]# jq '.speciality[1]' < test
"read"
"sleep"

負索引解析

[root@master ~]# jq '.speciality[-1]' < test
"read"
"sleep"

5、使用製表符處理結果資料

[root@master ~]# jq '[.name,.age,.speciality[0]] | @tsv'  < test
"Tom\t18\tsleep"
"Jerry\t16\teat"

可以去除製表符

[root@master ~]# jq '[.name,.age,.speciality[0]] | @tsv'  < test|sed 's/\\t/,/g'
"Tom,18,sleep"
"Jerry,16,eat"