如果键未知,如何选择嵌套键

问题描述 投票:0回答:1

我有一个非常简单的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”,“ diskspace”,“ db”等未知,可以有任何名称。

如果整体状态不是“ UP”,我想打印状态为“ UP”的所有对象。所需的示例输出将是

"db":{
      "status":"DOWN",
      "database":"Oracle",
      "schema":"foo"
   },
json jq
1个回答
1
投票

只需选择状态为DOWN的那些。 with_entries保留了原始结构。

with_entries(select(.value.status? == "DOWN"))
© www.soinside.com 2019 - 2024. All rights reserved.