Я хочу использовать jq
для возврата значения RuleArn
, если следующее условие соответствует, т. Е. .[].Conditions[].Values[]
имеет элемент, который соответствует app.fantastic.com
Мой JSON массив:
[
{
"Conditions": [
{
"Field": "http-header",
"HttpHeaderConfig": {
"Values": [
"dark"
],
"HttpHeaderName": "Environment"
}
},
{
"Values": [
"app.fantastic.com"
],
"Field": "host-header",
"HostHeaderConfig": {
"Values": [
"app.fantastic.com"
]
}
}
],
"IsDefault": false,
"Priority": "3",
"RuleArn": "iwantthisvalue"
}
]
Я пробовал это:
| jq -r '.[] | select(.Conditions[].Values[]=="app.fantastic.com")'
и
| jq -r '.[] | select(.Conditions[].Values[] | has("app.fantastic.com"))'
Я получаю следующую ошибку:
jq: ошибка (при: 144): невозможно индексировать массив с помощью строки «Условия»
И с этим:
| jq '.[].Conditions[].Values | index ("app.fantastic.com") == 0 | .RuleArn'
Это ошибка, которую я получаю:
jq: ошибка (при: 47): невозможно индексировать логическое значение со строкой "RuleArn"
Примечание: Мне не нужно решение, использующее --query
из AWS cli, поскольку я уже использую --query
, чтобы получить меньшую полезную нагрузку JSON, которую я хочу отфильтровать, используя jq
.