DANic
@DANic
Интроверт

Как использовать if на элемент массива в JQ c map?

Приветствую, есть JSON такого вида
{
    "servicesl": [
      {
        "name": "service1",
        "namespaces": [
          {
            "cluster": {
              "name": "cluster1",
              "url": "url1"
            },
            "name": "namespaces1"
          },
          {
            "cluster": {
              "name": "cluster2",
              "url": "url2"
            },
            "name": "namespaces2"
          }
        ],
        "tag": 1.1
      },
      {
        "name": "service2",
        "namespaces": [
          {
            "cluster": {
              "name": "cluster1",
              "url": "url1"
            },
            "name": "namespaces3"
          },
          {
            "cluster": {
              "name": "cluster2",
              "url": "url2"
            },
            "name": "namespaces4"
          }
        ],
        "tag": 2.2
      }
    ]
  }


Я хочу в с помощью JQ получить исходный JSON добавив в блок

"cluster": {
    "name": "cluster1",
    "url": "url1"
}


token со значением зависящем от проверки условия значения cluster.name

Не могу найти решение как с map использовать if проверну на cluster.name

Примерно такой фильтр, но как получить нужный index .namespaces[] что бы корректно условие

.services | map (.namespaces[].cluster.token = if .namespaces[].cluster.name == "cluster1" then "token1" elif .namespaces[].cluster.name == "cluster2" then "token2" else "ERROR" end)
  • Вопрос задан
  • 49 просмотров
Решения вопроса 1
DANic
@DANic Автор вопроса
Интроверт
Решение
.services[]
| (.namespaces[] | select(.cluster.name == "cluster1") | .cluster.token) |= "111"
| (.namespaces[] | select(.cluster.name == "cluster2") | .cluster.token) |= "222"
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы