网站首页 > 技术文章 正文
JSON 是一种数据表示格式,用于在应用程序的不同层之间存储和传输数据;它将数据存储在键:值对中。在文章中,我们将学习使用 JQ 命令在shell 中操作和处理 JSON 数据。 |
如何安装JQ命令
在Centos8中使用下面命令安装jq:
[root@localhost ~]# dnf -y install 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 命令来显示数据:
www.ccidnet.com/2016/0822/10173006.shtml
www.donews.com/news/detail/4/2970162.html
www.51cto.com/it/news/2020/0113/18299.html
www.donews.com/news/detail/4/2971720.html
[root@localhost ~]# cat employee.json
{"workers":{"name": "John Brooks","id": "003"}}
使用 cat 命令打印到标准输出的数据是无组织和混乱的。我们可以使用 JQ 命令和“.”来组织这些数据,使用.来筛选:
[root@localhost ~]# jq '.' employee.json
{
"workers": {
"name": "John Brooks",
"id": "003"
}
}
现在,数据变得更有条理、色彩丰富且更易于理解。从 API 访问数据时尤其需要此过滤器;API 中存储的数据可能非常无组织且令人困惑。
如何使用 JQ 命令访问属性
.字段过滤器和 JQ 命令可用于访问 shell 中的对象属性。
如果我们只想访问单个属性并将其打印到标准输出,那么我们可以使用.字段运算符。例如,要访问工人的属性,我们可以使用以下命令:
[root@localhost ~]# jq '.workers' employee.json
{
"name": "John Brooks",
"id": "003"
}
我们还可以使用.字段运算符访问属性中存在的项目。要访问工人属性中的名称项,我们将使用:
[root@localhost ~]# jq '.workers.name' employee.json
"John Brooks"
如何使用 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"}]
要输出 JSON 文件中存在的所有数组,我们将运行以下命令:
[root@localhost ~]# jq '.[]' employee.json
{
"name": "John Brooks",
"id": "003"
}
{
"name": "Randy Park",
"id": "053"
}
{
"name": "Todd Gray",
"id": "009"
}
要仅输出第二个数组,我们可以通过以下方式修改上述命令:
[root@localhost ~]# jq '.[1]' employee.json
{
"name": "Randy Park",
"id": "053"
}
请记住,数组从索引 0 开始的。
我们还可以使用 .字段 运算符访问数组中存在的属性。例如,如果我们想访问第三个数组中的 name 属性,那么我们将运行以下命令:
[root@localhost ~]# jq '.[2].name' employee.json
"Todd Gray"
类似地,要访问数组中的所有名称属性,我们可以执行以下命令:
[root@localhost ~]# jq '.[].name' employee.json
"John Brooks"
"Randy Park"
"Todd Gray"
总结
JQ 命令用于将 JSON 数据转换为更易读的格式并将其打印到 Linux 上的标准输出。JQ 命令是围绕过滤器构建的,过滤器用于从 JSON 文件中仅查找和打印所需的数据。
猜你喜欢
- 2024-10-23 「jQuery-5」 JavaScript对象和json
- 2024-10-23 超级好用的轻量级JSON处理命令jq(jsonpath js)
- 2024-10-23 $.ajax()常用方法详解(推荐)(ajax详细讲解)
- 2024-10-23 Jquery相关(jqueryui)
- 2024-10-23 jQuery知识点总结(jquery的认识)
- 2024-10-23 前端工程师面试题汇总(前端工程师面试题汇总怎么写)
- 2024-10-23 jQuery基础教程学习笔记(二)样式操作
- 2024-10-23 前端基础进阶(十三)详细图解jQuery扩展jQuery插件
- 2024-10-23 jQuery对象和DOM对象互相转换(jquery对象怎么转换dom对象)
- 2024-10-23 Help!AJAX到底怎么传多文件数组?知道的赶紧进来
- 11-27echarts图形报表的入门案例
- 11-27Echarts仿电梯运行图
- 11-27微信小程序开发之wepy 引入echarts统计图方法 亲测可用
- 11-27yarn安装echarts教程
- 11-27微信小程序使用 ECharts
- 11-274、echarts 如何画图?(必会)
- 11-27JavaScript 前端数据可视化——ECharts.js
- 11-27vue+echarts使用
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)