как выбрать вложенный ключ, если ключ неизвестен - PullRequest
0 голосов
/ 20 марта 2020

У меня очень просто JSON вот так:

{
   "status":"DOWN",
   "FTPService":{
      "status":"UP"
   },
   "mail":{
      "status":"UP",
      "location":"somehost.example.com:-1"
   },
   "diskSpace":{
      "status":"UP",
      "total":2000396742656,
      "free":1213046730752,
      "threshold":10485760
   },
   "db":{
      "status":"DOWN",
      "database":"Oracle",
      "schema":"foo"
   },
   "refreshScope":{
      "status":"UP"
   }
}

Ключи "mail", "diskpace", "db" et c. неизвестны и могут иметь любое имя.

Я хотел бы напечатать все объекты, статус которых не «ВВЕРХ», если общий статус не «ВВЕРХ». Желаемый пример вывода будет

"db":{
      "status":"DOWN",
      "database":"Oracle",
      "schema":"foo"
   },

1 Ответ

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

Просто выберите тех, чей статус ВНИЗ. with_entries существует для сохранения первоначальной структуры.

with_entries(select(.value.status? == "DOWN"))
...