博客 / 詳情

返回

如何在 Linux 命令行中解析 JSON ?

Linux 命令行 JSON 解析器

JQ 是一個通用的 Linux 命令行 JSON 處理器,它允許開發人員快速地解析、過濾和轉換 JSON 數據。在本文中,我們將介紹常用的 JQ 命令,展示如何簡化 JSON 處理任務。

示例 JSON 文件內容

您可以將以下示例數據保存在名為 input.json 的文件中。這個 JSON 數據表示具有各自姓名、年齡、國家和地址的人員數組。

[
  {
    "name": "Alice",
    "age": 35,
    "country": "USA",
    "address": {
      "street": "123 Main St",
      "city": "New York",
      "state": "NY",
      "zip": "10001"
    }
  },
  {
    "name": "Bob",
    "age": 28,
    "country": "Canada",
    "address": {
      "street": "456 Maple Ave",
      "city": "Toronto",
      "province": "ON",
      "postal_code": "M5V 1A1"
    }
  },
  {
    "name": "Charlie",
    "age": 42,
    "country": "USA",
    "address": {
      "street": "789 Oak St",
      "city": "San Francisco",
      "state": "CA",
      "zip": "94102"
    }
  },
  {
    "name": "David",
    "age": 23,
    "country": "Canada",
    "address": {
      "street": "321 Pine St",
      "city": "Vancouver",
      "province": "BC",
      "postal_code": "V6B 2P4"
    }
  }
]

使用示例

1. Pretty Print JSON Data

要美觀地打印 JSON 數據,只需將 JSON 文件傳遞給 JQ 命令,後跟一個句點("."):

jq '.' input.json

2. Retrieve a Specific JSON Key

要從 JSON 對象中提取特定鍵的值,使用以下語法:

jq '.key' input.json

例如,要提取 name 鍵的值,使用:

jq '.name' input.json

3. Access Nested JSON Values

要訪問嵌套的 JSON 值,使用點(".")表示法:

jq '.key1.key2.key3' input.json

例如,要提取嵌套在address 下的 city 鍵的值,使用:

jq '.address.city' input.json

4. Iterate Over JSON Arrays

使用方括號("[]")來迭代 JSON 數組:

jq '.[]' input.json

要從數組中的每個對象提取特定的鍵,使用 pipe("|")操作符:

jq '.[] | .key' input.json

5. Filter JSON Data

如果需要根據特定條件過濾 JSON 數據,可以使用 select 函數:

jq '.[] | select(.key == "value")' input.json

例如,要過濾數組中年齡大於 30 的對象,使用:

jq '.[] | select(.age > 30)' input.json

6. Map and Transform JSON Data

要映射和轉換 JSON 數據,使用大括號("{}"):

jq '.[] | {key1: .key1, key2: .key2}' input.json

例如,要創建一個只有 nameage 鍵的 JSON 對象,使用:

jq '.[] | {name: .name, age: .age}' input.json

7. Combine Multiple JSON Files

要合併兩個 JSON 文件,使用 "*" 操作符:

jq -s '.[0] * .[1]' file1.json file2.json

8. Perform Arithmetic Operations

JQ 可以對數值 JSON 值執行算術運算:

jq '.number1 + .number2' input.json

9. Sort JSON Data

要根據特定鍵對 JSON 數據進行排序,使用 sort_by 函數:

jq '.[] | sort_by(.key)' input.json
1 jq'.[] sort_by(.key)'input.json

例如,按照 age 鍵對對象數組進行排序,請使用:

jq '.[] | sort_by(.age)' input.json

10. Group JSON Data

要根據特定鍵對 JSON 數據進行分組,使用 group_by 函數:

jq 'group_by(.key)' input.json

例如,按照 country 鍵對對象數組進行分組,請使用:

jq 'group_by(.country)' input.json

我的開源項目

酷瓜雲課堂-在線教育解決方案

  • course-tencent-cloud(酷瓜雲課堂 - gitee倉庫)
  • course-tencent-cloud(酷瓜雲課堂 - github倉庫)
user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.