首頁 > 系統教程 > Linux > 主體

Linux 中的 JQ 指令使用實例

PHPz
發布: 2024-02-10 21:12:12
轉載
487 人瀏覽過

JSON 是一種資料表示格式,用於在應用程式的不同層之間儲存和傳輸資料;它將資料儲存在鍵:值對中。在文章中,我們將學習使用 JQ 指令在shell 中操作和處理 JSON 資料。

如何安裝JQ指令

#在Centos8中使用下方指令安裝jq

[root@localhost ~]# dnf -y install 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 命令使用实例

使用 cat 指令列印到標準輸出的資料是無組織且混亂的。我們可以使用 JQ 指令和「.」來組織這些數據,使用.來篩選:

[root@localhost ~]# jq '.' employee.json 
{
  "workers": {
    "name": "John Brooks",
    "id": "003"
  }
}
登入後複製
Linux 中的 JQ 命令使用实例

現在,數據變得更有條理、色彩豐富且更易於理解。從 API 存取資料時尤其需要此篩選器;API 中儲存的資料可能非常無組織且令人困惑。

如何使用 JQ 指令存取屬性

.欄位篩選器和 JQ 指令可用於存取 shell 中的物件屬性。

如果我們只想存取單一屬性並將其列印到標準輸出,那麼我們可以使用.欄位運算子。例如,要存取工人的屬性,我們可以使用以下命令:

[root@localhost ~]# jq '.workers' employee.json 
{
  "name": "John Brooks",
  "id": "003"
}
登入後複製
Linux 中的 JQ 命令使用实例

我們也可以使用.欄位運算子來存取屬性中存在的項目。要存取工人屬性中的名稱項,我們將使用:

[root@localhost ~]# jq '.workers.name' employee.json 
"John Brooks"
登入後複製
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 命令使用实例

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

[root@localhost ~]# jq '.[]' employee.json 
{
  "name": "John Brooks",
  "id": "003"
}
{
  "name": "Randy Park",
  "id": "053"
}
{
  "name": "Todd Gray",
  "id": "009"
}
登入後複製
Linux 中的 JQ 命令使用实例

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

[root@localhost ~]# jq '.[1]' employee.json 
{
  "name": "Randy Park",
  "id": "053"
}
登入後複製
Linux 中的 JQ 命令使用实例

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

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

[root@localhost ~]# jq '.[2].name' employee.json 
"Todd Gray"
登入後複製
Linux 中的 JQ 命令使用实例

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

[root@localhost ~]# jq '.[].name' employee.json 
"John Brooks"
"Randy Park"
"Todd Gray"
登入後複製
Linux 中的 JQ 命令使用实例

总 结

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

以上是Linux 中的 JQ 指令使用實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:lxlinux.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!