2017-12-19 7 views
2

値。フィルタリングオブジェクトは、このような文書を考える

上記のJSON文書の出力は次のようになります。

{ 
    "KVs" : [ 
    { 
     "Key": "animal", 
     "Value": "lion" 
    }, 
    { 
     "Key": "mascot", 
     "Value": "lion" 
    } 
    ], 
    "name": "roger" 
} 

select()でこれを実現する方法を見つけ出すことはできません。 1つの特定のフィールドに基づいて選択する方法を知っています。例えばキー名:.[] | select(.KVs[].Key == "animal")、右ですか?しかし、どのように2つのフィールド(Key &値)上の同じKVオブジェクトと一致するように指示しますか?

答えて

1

NMは、jqplayといくつかの試行錯誤の助けを借りて解決しました。

これが解決策です: .[] | select(.KVs[] | .Key == "animal" and .Value == "lion")

+2

それは唯一の内側のオブジェクトが一致したことから、ここでは重要ではありませんが、一般的に、あなたが 'any'を使用することを好むかもしれません。 ''。[] | select(.KVs | any(.Value == "lion")) 'と'。[] | select(.KVs [] | .Value == "lion") ' –

+0

興味深い。違いは、実際には何ですか?なぜ私は 'any'を使うのが好きですか? –

+0

両方の場合の結果の数を比較します。 –

関連する問題