【发布时间】:2020-06-05 17:07:40
【问题描述】:
我想解析一个 JSON 文件以获取条件是另一个键/值对的特定值,但我不知道如何处理(我不是开发人员)。例如,我得到这个 JSON
[
{
"id": "c490ffaf-92ea-4a29-9614-ab36a088f366",
"clientId": "account",
"name": "${client_account}",
"rootUrl": "${authBaseUrl}",
"baseUrl": "/realms/test1/account/",
"surrogateAuthRequired": false,
"enabled": true,
"clientAuthenticatorType": "client-secret",
},
{
"id": "2daa32334-24322-4a29-43242-423223",
"clientId": "swap",
"name": "${client_swap}",
"rootUrl": "${authBaseUrl}",
"baseUrl": "/realms/test/swap/",
"surrogateAuthRequired": false,
"enabled": true,
"clientAuthenticatorType": "client-secret",
},
{
"id": "e22112-11111-4a329-22211-333312",
"clientId": "broker",
"name": "${client_broker}",
"rootUrl": "${authBaseUrl}",
"baseUrl": "/realms/test/broker/",
"surrogateAuthRequired": false,
"enabled": true,
"clientAuthenticatorType": "client-secret",
},
]
我想从“clientId”的值为“account”的块中获取“id”的值(在此示例中为 c490ffaf-92ea-4a29-9614-ab36a088f366)
如何用 jq 和 bash 做那种事情?
【问题讨论】:
-
您可以使用
jq -r 'map(select(.clientId == "account") | .id)[0]'(try it here)。如果您还有其他问题,请查看 jq 的 manual 和 tutorial 并尝试在询问您是否遇到问题之前提出自己的解决方案,StackOverflow 上不太接受要求代码但不付出努力的问题。