1. ホーム
  2. json

[解決済み] jqを使用して、オブジェクト内の変数の値に基づいてオブジェクトを選択します。

2022-03-15 18:38:54

質問

以下のようなjsonファイルがあります。

{
    "FOO": {
        "name": "Donald",
        "location": "Stockholm"
    },
    "BAR": {
        "name": "Walt",
        "location": "Stockholm"
    },
    "BAZ": {
        "name": "Jack",
        "location": "Whereever"
    }
}

私はjqを使用しており、'場所'が'ストックホルム'であるオブジェクトの"name"要素を取得したいです。

ですべての名前を取得できることは知っています。

cat json | jq .[] | jq ."name"
"Jack"
"Walt"
"Donald"

しかし、サブキーの値を与えて、特定のオブジェクトだけを印刷する方法がわかりません(ここでは。 "location" : "Stockholm" ).

解決方法は?

この記事は、以下の記事から引用しています。 jqでJSONを処理する を使用することができます。 select(bool) このように

$ jq '.[] | select(.location=="Stockholm")' json
{
  "location": "Stockholm",
  "name": "Walt"
}
{
  "location": "Stockholm",
  "name": "Donald"
}