如何使用jq/jmespath仅过滤对象名称?

问题描述 投票:0回答:1

我有以下json:

{
"hostNamesDisabled": false,
"hostingEnvironmentProfile": null,
"httpsOnly": true,
"hyperV": false,
"identity": {
    "principalId": null,
    "tenantId": null,
    "type": "UserAssigned",
    "userAssignedIdentities": {
        "<random_object_name>": {
            "clientId": "xxxx",
            "principalId": "xxxx"
        }
    }
},
"inProgressOperationId": null,
"isDefaultContainer": null

}

使用 jq,我可以轻松过滤键,例如:

$ jq -r '.httpsOnly'
true

$ jq -r '.identity.principalId
null

并检索它们各自的值,以便我可以在 shell 脚本中将它们用作变量。

问题是:如何过滤identity.userAssignedIdentities对象以获取名称/内容,如下所示:

$ jq -r '.identity.userAssignedIdentities.???'
<random_object_name>

但不是剩下的键值对?

json jwt jq jmespath
1个回答
0
投票

如果只有一个键,可以使用

keys
提供的数组的第一项:

jq -r '.identity.userAssignedIdentities | keys[0]'

演示

© www.soinside.com 2019 - 2024. All rights reserved.