在 Linux 命令行中格式化输出 json
原创在 Linux 命令行中格式化输出 JSON
在 Linux 系统中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于数据传输。有时候,我们大概需要从命令行工具中获取 JSON 数据,并愿望能够以可读的格式展示出来。本文将介绍怎样在 Linux 命令行中格式化输出 JSON 数据。
### 1. 使用 `jq` 工具
`jq` 是一个轻量级的命令行 JSON 处理器,可以用来过滤、映射和转换 JSON 数据。在大多数 Linux 发行版中,可以通过包管理器安装 `jq`。
#### 1.1 安装 `jq`
以下是在 Ubuntu 和 Debian 系统中安装 `jq` 的命令:
bash
sudo apt-get update
sudo apt-get install jq
对于 CentOS 和 Fedora,可以使用以下命令:
bash
sudo yum install jq
#### 1.2 使用 `jq` 格式化输出 JSON
安装 `jq` 后,可以使用以下命令格式化输出 JSON 数据:
bash
echo '{"name":"John", "age":30, "city":"New York"}' | jq .
这里的 `.` 即将整个 JSON 对象输出。输出最终如下:
json
{
"name": "John",
"age": 30,
"city": "New York"
}
#### 1.3 使用 `jq` 过滤和转换 JSON
`jq` 拥护多彩的表达式,可以用来过滤和转换 JSON 数据。以下是一些示例:
- 获取 JSON 对象中的特定字段:
bash
echo '{"name":"John", "age":30, "city":"New York"}' | jq '.name'
输出最终:
"John"
- 过滤出年龄大于 25 的用户:
bash
echo '[{"name":"John", "age":30}, {"name":"Jane", "age":20}]' | jq '.[] | select(.age > 25)'
输出最终:
json
[
{
"name": "John",
"age": 30
}
]
### 2. 使用 `python` 脚本
如果你不熟悉 `jq`,也可以使用 Python 脚本来格式化输出 JSON 数据。Python 的 `json` 模块可以用来解析和格式化 JSON 数据。
#### 2.1 解析 JSON 数据
以下是一个使用 Python 解析 JSON 数据的示例:
python
import json
json_data = '{"name":"John", "age":30, "city":"New York"}'
data = json.loads(json_data)
print(json.dumps(data, indent=4))
输出最终:
json
{
"name": "John",
"age": 30,
"city": "New York"
}
这里的 `indent=4` 参数用于设置缩进,允许输出最终更加易于阅读。
#### 2.2 过滤和转换 JSON 数据
Python 的 `json` 模块同样可以用来过滤和转换 JSON 数据。以下是一个示例:
python
import json
json_data = '[{"name":"John", "age":30}, {"name":"Jane", "age":20}]'
data = json.loads(json_data)
filtered_data = [item for item in data if item['age'] > 25]
print(json.dumps(filtered_data, indent=4))
输出最终:
json
[
{
"name": "John",
"age": 30
}
]
### 3. 使用 `curl` 和 `json_pp`
如果你需要从远程服务器获取 JSON 数据,可以使用 `curl` 和 `json_pp`(JSON Pretty Printer)来格式化输出。
#### 3.1 使用 `curl` 获取 JSON 数据
以下是一个使用 `curl` 获取远程 JSON 数据的示例:
bash
curl -s http://api.example.com/data | json_pp
这里的 `-s` 参数用于抑制输出进度信息。
#### 3.2 使用 `json_pp` 格式化输出
`json_pp` 是一个用来格式化 JSON 数据的工具,可以与 `curl` 结合使用。如果你没有安装 `json_pp`,可以使用以下命令安装:
bash
sudo apt-get install jsonpp
对于 CentOS 和 Fedora,可以使用以下命令:
bash
sudo yum install json-c
安装完成后,再次使用 `curl` 和 `json_pp` 格式化输出 JSON 数据:
bash
curl -s http://api.example.com/data | json_pp
### 4. 总结
在 Linux 命令行中格式化输出 JSON 数据有多种方法,包括使用 `jq`、Python 脚本、`curl` 和 `json_pp`。选择