假设我有以下 json。我想获取“员工”在一年中拥有不同团队的所有项目。
[
{
"id": 122343,
"name": "Tom Muller",
"teams": [
{
"year": "2010-2011",
"team_id": 27
},
{
"year": "2011-2012",
"team_id": 27
},
{
"year": "2013-2014",
"team_id": 27
}
]
},
{
"id": 338744,
"name": "Eric Gonzales",
"teams": [
{
"year": "2010-2011",
"team_id": 12
},
{
"year": "2011-2012",
"team_id": 17
},
{
"year": "2013-2014",
"team_id": 17
}
]
}
]
我想用 jq 查询数组,输出会返回
{
"id": 338744,
"name": "Eric Gonzales",
"teams": [
{
"year": "2010-2011",
"team_id": 12
},
{
"year": "2011-2012",
"team_id": 17
},
{
"year": "2013-2014",
"team_id": 17
}
]
}
我将如何编写这样的查询?
谢谢
使用 和unique_by
可以将数组缩减为.teams
不同的数组.team_id
,使用select
和length
可以过滤那些严格来说不止一个这样的项目的数组。
jq '.[] | select(.teams | unique_by(.team_id) | length > 1)'
{
"id": 338744,
"name": "Eric Gonzales",
"teams": [
{
"year": "2010-2011",
"team_id": 12
},
{
"year": "2011-2012",
"team_id": 17
},
{
"year": "2013-2014",
"team_id": 17
}
]
}
这为您提供了一个对象流(如果有多个结果)。如果要将它们作为数组使用,请使用map(select(…))
而不是。.[] | select(…)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句