在 Linux 命令行中格式化输出 json

原创
ithorizon 7个月前 (10-06) 阅读数 38 #Linux

在 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`。选择

本文由IT视界版权所有,禁止未经同意的情况下转发

文章标签: Linux


热门