如何解决根据作为字典的键减少字典数组
我正在寻找一个jq表达式,该表达式可以通过将它们分组在“标签”上来减少json。我希望输出中包含共享相同标签的目标列表。
我尝试使用group_by和reduce的一些组合,但无法获得想要的东西。
输入:
[{
"targets": [
"host1"
],"labels": {
"platform": "VMware","os": "Windows","datacenter": "dc1","environment": "Production"
}
},{
"targets": [
"host2"
],{
"targets": [
"host3"
],"datacenter": "dc2","environment": "Production"
}
}
]
输出:
[{
"targets": [
"host1","host2"
],{
"targets": [
"host3",],"environment": "Production"
}
}
]
P.S示例输入的“ labels”中没有所有键,并且列表可能会有所不同。
解决方法
如果您的要求更加明确,特别是如果您的示例满足mcve准则,这将很有帮助。但是,以下查询确实满足您对规范的一种解释:
group_by(.labels)
| map( { labels: (.[0].labels),targets: (map(.targets)|add)} )
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。