2017-05-08 112 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

事情是,我有一个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)),但在实践中这是很快速。

相关问题