Невозможно индексировать строку со строкой при использовании рекурсии - PullRequest
0 голосов
/ 26 марта 2020

Я пытаюсь проанализировать этот пример json с помощью jq

{
  "config": {
    "env-1": {
      "LoadBalancerGroup": {
        "Algorithm": "weighted-round-robin",
        "LBGroupMembers": [
          {
            "Server": "10.183.191.131"
          },
          {
            "Server": "10.183.191.153"
          }
        ],
        "name": "LBG-https",
        "state": {
          "opstate": "up"
        }
      }
    }
  }
}

ключ env-1 будет отличаться, и мне нужно получить доступ, используя рекурсию (..) или подобную технику

Я застрял в следующей ошибке, которая, вероятно, связана с поиском не га sh узлов

cat recursion.json | jq  ' ..|.["LoadBalancerGroup"]|."name"?' | jq .
jq: error (at <stdin>:20): Cannot index string with string "LoadBalancerGroup"
null
null
"LBG-https"
null

при попытке выбора (type == "object" и has ("name"))) и другие предложения не решили эту проблему, и я буду признателен за любые предложения.

Спасибо

1 Ответ

1 голос
/ 26 марта 2020

Я думаю, что сообщение об ошибке достаточно ясно. Вы не можете индексировать строки со строками, вам нужно выбирать объекты.

Предполагая, что LoadBalancerGroup всегда является объектом, и игнорирование нулевого name не имеет значения:

.. | objects | .LoadBalancerGroup.name // empty
...