2017-05-08 16 views
1

は、私は、オブジェクトの配列を含むJSONファイル(test.json)を持っている:jqを使用してJSON配列から特定のIDを持つオブジェクトを選択する方法は?

[ 
    { 
     "name": "Test 1", 
     "id": 1 
    }, 
    { 
     "name": "Test 2", 
     "id": 2 
    }, 
    { 
     "name": "Test 3", 
     "id": 3 
    } 
] 

私は特定のIDを持つすべてのオブジェクトを、抽出したいです。特定のID(jq 'map(select(.id == 2))' test.json)が1つだけ必要な場合は、オブジェクトを取得できました。

私はIDのリストを持っています(例えば、1と3)。これらのオブジェクトだけを含むリストを取得するにはどうすればよいですか?したがって、この例では、ID 1と3のオブジェクトを含むリストですか?

あなたがここに例をチェックすることができます:https://jqplay.org/s/xQgpA4yJAz

答えて

1

このページに提示されるようcontains/1を使用したソリューションは、全く同じようにすることができ==を使用して書かれました:

map(select(.id == (1,3))) 

これに言及した主な理由は、containsが潜在的な驚きに満ちていることです。 (.idは、文字列値だった場合に何が起こるか、例えば、考えてみましょう。)

実際にはかなりですが、残念ながら、上記のように==containsのいずれかを使用して、(それはO(M * n)である)、計算上非効率的です速い。

関連する問題