Linux jq JSON 处理命令指南

linuxjsonoperating system更新于 2026/2/7 7:37:17

简介

JSON(JavaScript 对象表示法)是一种用于在应用程序之间交换信息的流行数据格式。它轻量级且易于理解。为了高效地处理 JSON 数据,Linux 提供了一个名为 jq 的命令行工具。这个强大的工具使用户能够轻松地提取、操作和转换 JSON 数据。使用 jq,用户可以快速对 JSON 数据执行各种任务,包括过滤、排序和选择特定字段。此外,jq 支持多种输出格式,使其易于与其他命令行工具集成。在本文中,我们将探讨 jq 命令及其用于 JSON 处理的各种特性和功能。

jq 的安装过程

在开始使用 jq 之前,我们需要确保它已安装在我们的系统上。可以使用 Linux 包管理器安装 jq。例如,要在 Ubuntu 上安装 jq,我们可以使用以下命令 -

$ sudo apt-get install jq

完成上述任何一种安装方法后,您可以通过运行以下命令来验证安装 -

$ jq --version

如果 jq 安装正确,此命令应显示系统上安装的 jq 版本号。

从基本命令开始

示例

$ echo '{"fruit":{"name":"mango","color":"yellow","price":4.20}}' | jq '.'

带有"."过滤器的 jq 命令用于在控制台输出中美化打印 JSON 对象。"."过滤器只是选择整个输入对象并返回它。

输出

{
   "fruit": {
      "name": "mango",
      "color": "yellow",
      "price": 4.2
   }
}

安装和使用 curl 命令

示例

$ sudo apt install curl

安装后,您可以在终端中运行此命令 -

$ curl http://api.open-notify.org/iss-now.json | jq '.'

此命令使用 curl 命令向 URL http://api.open-notify.org/iss-now.json 发出 HTTP GET 请求,该请求返回一个包含国际空间站 (ISS) 当前经纬度坐标的 JSON 对象。

输出

% Total    % Received % Xferd   Average Speed    Time    Time     Time      Current
                                 Dload  Upload  Total   Spent     Left       Speed
100   112  100   112    0     0   159      0    --:--:-- --:--:-- --:--:--     159
{
   "message": "success",
   "iss_position": {
      "latitude": "19.4146",
      "longitude": "-3.3218"
   },
   "timestamp": 1678259912
}

创建 JSON 文件

示例

首先进入桌面

$ cd Desktop/

在桌面上创建一个名为 fruit.json 的文件

$ touch fruit.json

在桌面上打开该文件并输入以下代码。

{
   "fruit": {
      "name": "mango",
      "color": "yellow",
      "price": 4.2
   }
}

输入此代码后保存代码并返回终端并运行以下命令 -

$ cat fruit.json

输出

{
   "fruit": {
      "name": "mango",
      "color": "yellow",
      "price": 4.2
   }
}

访问 JSON 文件属性的不同方法

示例

现在我们尝试将属性值链接在一起以访问嵌套对象,以下是示例 -

$ jq '.fruit.name' fruit.json
"mango"

我们从 JSON 对象中检索多个键,使用逗号分隔它们,以下是示例 -

$ jq '.fruit.color,.fruit.price' fruit.json
"yellow"
4.2

打印数组中的每个元素

这是数组的基本格式。

$ echo '["Aditya","Adil","Arindom"]' | jq '.[]'

输出

"Aditya"
"Adil"
"Arindom"

在桌面创建一个新的 JSON 文件

在桌面上创建一个名为 fruits.json 的文件

$ touch fruits.json

现在在桌面上打开新文件并复制粘贴以下代码。

[
   {
      "name": "Mango",
      "color": "yellow",
      "price": 4.2
   },
   {
      "name": "Grave",
      "color": "green",
      "price": 2.5
   },
   {
      "name": "Blueberry",
      "color": "blue",
      "price": 1.25
   }
]

之后保存文件,返回终端并运行此代码。

打印数组中每个对象的所有水果名称

示例

$ jq '.[].name' fruits.json

[] 运算符用于遍历数组中的每个元素,| 运算符用于将多个过滤器链接在一起。第一个过滤器 .[] 选择数组中的每个元素,第二个过滤器 .name 从每个选定元素中选择"name"键的值。

输出

"Mango"
"Grave"
"Blueberry"

通过索引访问价格

示例

$ jq '.[1].price' fruits.json

数组索引从 0 开始,这里 Mango 是第 0 个索引,Grave 是第 1 个索引,Blueberry 是第 2 个索引。

在此命令中,我们尝试打印第 1 个索引,即 Grave 的价格。

输出

2.5

切片使用 jq 命令切片数组

示例

jq 中的切片是指根据索引或键从数组或对象中选择元素的子集。

$ echo '[10,12,14,16,18,20,22,24,26,28,30]' | jq '.[4:8]'

输出

[
   18,
   20,
   22,
   24
]

在您提供的示例中,切片 . [4:8] 选择索引为 4、5、6 和 7 的元素,但排除索引为 8 的元素。

从数组中查找最大最小值

如果我们需要确定输入数组的最小或最大元素,我们可以使用 min 和 max 函数。

示例

查找最小值

$ jq '[.[].price] | min' fruits.json

输出

1.25

使用 Select 函数

Select 函数是我们可以用来进行 JSON 查询的另一个有用工具。

示例

$ jq '.[] | select(.color=="yellow" and .price>=4.2)' fruits.json

输出

{
   "name": "Mango",
   "color": "yellow",
   "price": 4.2
}

从 JSON 中删除键

有时,我们可能需要从 JSON 对象中删除键值对。

示例

$ jq 'del(.fruit.color)' fruit.json

输出

{
   "fruit": {
      "name": "mango",
      "price": 4.2
   }
}

结论

Linux jq 命令是命令行中处理 JSON 数据的重要工具。本文提供了 jq 命令的 JSON 处理指南,包括如何安装以及如何使用它进行基本操作。我们还提供了如何使用 jq 命令处理 JSON 数据的示例,以及代码和输出。


有用资源