Linux 中的 JQ 命令使用实例

本文详细介绍了如何在CentOS 8中安装JQ命令,并通过实例演示了如何使用JQ的过滤器组织、访问JSON数据,包括属性和数组元素。无论是数据整理还是API数据处理,JQ都是不可或缺的工具。
导读JSON 是一种数据表示格式,用于在应用程序的不同层之间存储和传输数据;它将数据存储在键:值对中。在文章中,我们将学习使用 JQ 命令shell 中操作和处理 JSON 数据。

如何安装JQ命令

Centos8中使用下面命令安装jq

[root@localhost ~]# dnf -y install jq

Linux 中的 JQ 命令使用实例Linux 中的 JQ 命令使用实例

语法

现在我们可以开始使用 JQ 命令,因为它已经成功安装在我们的系统上,但首先,让我们看一下 JQ 命令的语法:

jq [options]  [file...]

jq [options] --args  [strings...]

jq [options] --jsonargs  [JSON_TEXTS...]

JQ 命令可以用多种不同的方式使用;它可以直接用于 JSON 文件,也可以结合其他几个命令来解释 JSON 数据。JQ 命令可以与不同的过滤器一起使用,例如“.”、“|”、“,”或“.[]”过滤器来组织 JSON 数据。

JQ 命令还采用不同的选项作为参数,例如 --tab、--stream、--indent n、--unbuffered 和 -L 目录选项。JQ 命令的语法乍一看可能很复杂,但阅读整篇文章后您就会熟悉它。

如何使用 JQ 命令组织 JSON 数据

JQ 命令过滤器最简单和常用的特性。它们用于在将 JSON 数据打印到标准输出时对其进行组织和美化。

在这个例子中,我们有一个名为 employee.json 的 JSON 文件,我们需要将数据输出到标准输出:

{"workers":{"name": "John Brooks","id": "003"}}

我们可以使用 cat 命令来显示数据:

[root@localhost ~]# cat employee.json 
{"workers":{"name": "John Brooks","id": "003"}}

Linux 中的 JQ 命令使用实例Linux 中的 JQ 命令使用实例


使用 cat 命令打印到标准输出的数据是无组织和混乱的。我们可以使用 JQ 命令和“.”来组织这些数据,使用.来筛选:

[root@localhost ~]# jq '.' employee.json 
{
  "workers": {
    "name": "John Brooks",
    "id": "003"
  }
}

Linux 中的 JQ 命令使用实例Linux 中的 JQ 命令使用实例


现在,数据变得更有条理、色彩丰富且更易于理解。从 API 访问数据时尤其需要此过滤器;API 中存储的数据可能非常无组织且令人困惑。

如何使用 JQ 命令访问属性

.字段过滤器和 JQ 命令可用于访问 shell 中的对象属性。

如果我们只想访问单个属性并将其打印到标准输出,那么我们可以使用.字段运算符。例如,要访问工人的属性,我们可以使用以下命令:

[root@localhost ~]# jq '.workers' employee.json 
{
  "name": "John Brooks",
  "id": "003"
}

Linux 中的 JQ 命令使用实例Linux 中的 JQ 命令使用实例


我们还可以使用.字段运算符访问属性中存在的项目。要访问工人属性中的名称项,我们将使用:

[root@localhost ~]# jq '.workers.name' employee.json 
"John Brooks"

Linux 中的 JQ 命令使用实例Linux 中的 JQ 命令使用实例

如何使用 JQ 命令访问数组项

我们还可以使用 .[] 运算符访问和输出 JSON 文件中数组中存在的元素。对于这个例子,我们将修改我们的 JSON 文件,添加下面内容:

[{"name": "John Brooks","id": "003"},{"name": "Randy Park","id": "053"},{"name": "Todd Gray","id": "009"}]

查看一下employee.json文件:

[root@localhost ~]# cat employee.json 
[{"name": "John Brooks","id": "003"},{"name": "Randy Park","id": "053"},{"name": "Todd Gray","id": "009"}]

Linux 中的 JQ 命令使用实例Linux 中的 JQ 命令使用实例


要输出 JSON 文件中存在的所有数组,我们将运行以下命令:

[root@localhost ~]# jq '.[]' employee.json 
{
  "name": "John Brooks",
  "id": "003"
}
{
  "name": "Randy Park",
  "id": "053"
}
{
  "name": "Todd Gray",
  "id": "009"
}

Linux 中的 JQ 命令使用实例Linux 中的 JQ 命令使用实例


要仅输出第二个数组,我们可以通过以下方式修改上述命令:

[root@localhost ~]# jq '.[1]' employee.json 
{
  "name": "Randy Park",
  "id": "053"
}

Linux 中的 JQ 命令使用实例Linux 中的 JQ 命令使用实例


请记住,数组从索引 0 开始的。

我们还可以使用 .字段 运算符访问数组中存在的属性。例如,如果我们想访问第三个数组中的 name 属性,那么我们将运行以下命令:

[root@localhost ~]# jq '.[2].name' employee.json 
"Todd Gray"

Linux 中的 JQ 命令使用实例Linux 中的 JQ 命令使用实例


类似地,要访问数组中的所有名称属性,我们可以执行以下命令:

[root@localhost ~]# jq '.[].name' employee.json 
"John Brooks"
"Randy Park"
"Todd Gray"

Linux 中的 JQ 命令使用实例Linux 中的 JQ 命令使用实例

总结

JQ 命令用于将 JSON 数据转换为更易读的格式并将其打印到 Linux 上的标准输出。JQ 命令是围绕过滤器构建的,过滤器用于从 JSON 文件中仅查找和打印所需的数据。Linux就该这么学

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值