jq и bash: получить заданное значение c в json, когда совпадает другая пара значений ключа - PullRequest
0 голосов
/ 21 февраля 2020

Я хочу проанализировать файл JSON, чтобы получить конкретное значение c, где условием является другая пара ключ / значение, но я не знаю, как с этим справиться (я не разработчик). Например, я получаю это 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",
    },
]

Я хочу значение "id" (c490ffaf-92ea-4a29-9614-ab36a088f366 в этом примере) из блока, где значение из "clientId" такое "account"

Как это сделать с помощью jq и bash?

1 Ответ

0 голосов
/ 21 февраля 2020

Если существует более одного вхождения, было бы целесообразно использовать следующий запрос:

.[]
| select(.clientId == "account")
| .id
...