jqを使用してJSON配列の特定のキーを持つアイテムからデータを取得する

jqを使用してJSON配列の特定のキーを持つアイテムからデータを取得する

以下のJSONドキュメントでキーに値を持つemailエントリをどのように取得しますか?level2

予想される出力は次のとおりです。

[email protected]

どんな提案がありますか?

{
  "escalation_policy": {
    "on_call": [
      {
        "level": 2,
        "start": "2022-05-25T00:30:00Z",
        "end": "2022-05-25T09:30:00Z",
        "user": {
          "id": "ABOKC",
          "name": "Jaavena Dobey",
          "email": "[email protected]",
          "time_zone": "Tokyo"
        }
      },
      {
        "level": 7,
        "start": "2022-05-23T01:00:00Z",
        "end": "2022-05-30T01:00:00Z",
        "user": {
          "id": "KLSPSP",
          "name": "kosls frank",
          "email": "[email protected]",
          "time_zone": "Tokyo"
        }
      },
      {
        "level": 3,
        "start": "2022-05-23T01:00:00Z",
        "end": "2022-05-30T01:00:00Z",
        "user": {
          "id": "SKSPSLSL",
          "name": "Smitha Choudhary",
          "email": "[email protected]",
          "time_zone": "Tokyo"
        }
      }
    ]
  }
}

ベストアンサー1

このように、

  1. オブジェクトの配列を取得します。
  2. レベル2を選択してください
  3. 返された配列からユーザーの電子メールを印刷します。

呼び出しと出力、

$ jq ".escalation_policy.on_call[] | select( .level == 2) | .user.email" test.json
"[email protected]"

おすすめ記事