JASON 语言简介
- JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
- JSON 是轻量级的文本数据交换格式
- JSON 独立于语言:JSON 使用 Javascript语法来描述数据对象,但是 JSON
仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。
目前非常多的动态(PHP,JSP,.NET)编程语言都支持 JSON
- JSON 具有自我描述性,更易理解
详细参考:jason数据格式
Shell脚本解析JASON数据
使用jq
解析JASON数据
jq
是一个小型跨平台解决方案,用于以更短、更简单、更轻松的方式管理 JSON
数据。安装jq
jq .
命令美化 json 数据。
1
| curl "https://jsonplaceholder.typicode.com/posts" | jq .
|
输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| [ { "userId": 1, "id": 1, "title": "delectus aut autem", "completed": false }, { "userId": 1, "id": 2, "title": "quis ut nam facilis et officia qui", "completed": false }, { "userId": 1, "id": 3, "title": "fugiat veniam minus", "completed": false } ... // remaining list of data ]
|
- 从 JSON 获取特定字段的值
我们可以使用 jq.[].field_name
从 JSON
数据数组中获取任何特定字段的值。
1
| curl "https://jsonplaceholder.typicode.com/posts" | jq '.[].id'
|
输出:
- 从 JSON 中获取第一个项目的标题
1
| curl "https://jsonplaceholder.typicode.com/posts" | jq '.[0].title'
|
输出:
使用grep
解析JSON
grep
命令也可用于解析 JSON 数据。
示例 JSON 文件:
1 2 3 4 5 6 7 8 9 10 11 12
| [ { "id": 1, "name": "Andres Gustov", "email": "andddy7@gmail.com" }, { "id": 2, "name": "Anthony Marklov", "email": "antman33@gmail.com" } ]
|
示例脚本:
1
| grep -o '"email": "[^"]*' examplejsonfile.json | grep -o '[^"]*$'
|
我们使用 -o
选项仅选择与给定模式匹配的行。然后,我们指定模式'"email": "[^"]*'
,这意味着我们想要键
email
的所有值。之后,我们传递 JSON
文件来查找模式。最后,我们使用另一个 grep -o
命令将结果通过管道输出,以删除除值之外的所有内容。
输出:
1 2
| andddy7@gmail.com antman33@gmail.com
|
使用python3
解析JSON
我们还可以使用 python 的 json
模块来处理 JSON 操作。
1
| curl -s 'https://jsonplaceholder.typicode.com/posts' | \ python3 -c "import sys, json; print(json.load(sys.stdin))"
|
获取特定字段值
1 2
| curl "https://jsonplaceholder.typicode.com/posts" | \ python3 -c "import sys, json; data=json.load(sys.stdin); print([d['id'] for d in data])"
|
输出:
获取第一个项目的标题
1 2
| curl "https://jsonplaceholder.typicode.com/posts" | \ python3 -c "import sys, json; print(json.load(sys.stdin)[0]['title'])"
|
输出: