当我们在Linux下需要处理json数据时,第一反应是用脚本编写一个工具,这样即耗时又不通用. 本文将介绍专门的命令行json处理工具jq.
安装
Ubuntu用户可以直接使用下列命令安装:1
$ sudo apt-get install jq
也可以选择源码安装,当然最简单的方法是直接下载可执行文件,不过需要找到适配你系统的版本.
详细的安装方法可以参考这里.
使用
首先构建一个基本的字符串作为示例 test.json:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24{
"name": "中国",
"province": [{
"name": "黑龙江",
"cities": {
"city": ["哈尔滨", "大庆"]
}
}, {
"name": "广东",
"cities": {
"city": ["广州", "深圳", "珠海"]
}
}, {
"name": "台湾",
"cities": {
"city": ["台北", "高雄"]
}
}, {
"name": "新疆",
"cities": {
"city": ["乌鲁木齐"]
}
}]
}
解析json对象
1 | $ cat test.json | jq '.name' |
提取字段
1 | $ cat test.json | jq '.province[0]' |
内建函数
keys用来提取json中的key元素:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35$ cat test.json | jq 'keys'
[
]
$ cat test.json | jq '.|keys'
[
]
$ cat test.json | jq '.province[0]|keys'
[
]
$ cat test.json | jq '.province[]|keys'
[
]
[
]
[
]
[
]
has用来判断是否存在某个key:1
2
3
4
5
6$ cat test.json | jq 'has("name")'
true
$ cat test.json | jq '.province[0] | has("name")'
true
$ cat test.json | jq 'has("noname")'
false
验证json
若json串格式错误的话,可以直接使用jq运行,会报出具体错误.
总结
有了这个工具.你就可以直接在命令行或者shell脚本对json数据进行操作了.
About me
- GitHub:AnSwErYWJ
- Blog:http://www.answerywj.com
- Email:yuanweijie1993@gmail.com
- Weibo:@AnSwEr不是答案
- CSDN:AnSwEr不是答案的专栏
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。