如何使用jq从JSON数组中选择具有特定ID的对象?

如何使用jq从JSON数组中选择具有特定ID的对象?,json,jq,Json,Jq,我有一个JSON文件,其中包含一个对象数组(test.JSON): 我想提取所有具有特定ID的对象。如果我只需要一个特定ID,我会设法获取一个对象:jq'map(select(.ID==2))'test.json 问题是,我有一个ID列表,比如1和3。如何获得仅包含这些对象的列表?那么在这个例子中,包含ID为1和3的对象的列表 您可以在这里查看示例:jq'map(选择(.id | contains(1,3))” 老兄,jq太棒了 使用的解决方案包含/1,如本页所示,也可以使用=编写: map(s

我有一个JSON文件,其中包含一个对象数组(test.JSON):

我想提取所有具有特定ID的对象。如果我只需要一个特定ID,我会设法获取一个对象:
jq'map(select(.ID==2))'test.json

问题是,我有一个ID列表,比如1和3。如何获得仅包含这些对象的列表?那么在这个例子中,包含ID为1和3的对象的列表

您可以在这里查看示例:

jq'map(选择(.id | contains(1,3))”

老兄,jq太棒了


使用
的解决方案包含/1
,如本页所示,也可以使用
=
编写:

map(select(.id == (1,3)))
提到这一点的主要原因是
contains
充满了潜在的惊喜。(例如,考虑一下如果
.id
是字符串值会发生什么情况。)

不幸的是,如上所述使用
==
contains
在计算上效率低下(它是O(m*n)),尽管在实践中速度相当快

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