如何组合2个独立过滤器的输出

我正在查询类似于这样的 AWS 调用的结果:

{
    "SecretList": [
        {
            "ARN": "arn:aws:secretsmanager....",
            "Name": "some-name",
            "Description": "",
            "LastChangedDate": "2021-06-03T20:43:35.059000-05:00",
            "LastAccessedDate": "2021-05-31T19:00:00-05:00",
            "Tags": [
                {
                    "Key": "company-mnemonic",
                    "Value": "whatever"
                },
                {
                    "Key": "usage",
                    "Value": "something"
                }
            ]
         }
     ]
}

我想要的是 ARN、名称和带有“公司助记符”键的标签。到目前为止,我已经提出了 2 个单独的过滤器,但我需要了解如何组合它们。获得 ARN 和 Name 很容易:.SecretList[] | {ARN, Name}. 查询标签是棘手,但我想通了这一点:.SecretList[].Tags[] | select(.Key == "company-mnemonic") | {"company-mnemonic": .Value}。有没有一种方法可以将这两个想法合并为一个,以便我得到如下所示的内容:

{
    "ARN": "arn:aws:secretsmanager....",
    "Name": "some-name",
    "company-mnemonic": "whatever"
}

回答

这一点都不棘手。Tags可以使用 转换为适当的对象from_entries,然后是简单的添加。

.SecretList[] | {ARN, Name} + (.Tags | from_entries | {"company-mnemonic"})

在线演示


以上是如何组合2个独立过滤器的输出的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>