繁体   English   中英

从 JSON 中删除除一个键值对以外的所有键值对

[英]Delete all but one key-value pair from JSON

我有这个:

{
  "service" : {
    "category" : "managed-object",
    "resource" : "attribute",
    "action" : "delete",
    "options" : {
      "uuid" : "#VALUE",
      "attributes" : {
        "name" : {
          "value" : "#VALUE"
        },
        "contactInfo" : "",
        "activationDate" : "",
        "deactivationDate" : "",
        "protectStopDate" : "",
        "processStartDate" : ""
      }
    }
  }
}

我需要这个:

{
  "service" : {
    "category" : "managed-object",
    "resource" : "attribute",
    "action" : "delete",
    "options" : {
      "uuid" : "#VALUE",
      "attributes" : {
        "name" : {
          "value" : "#VALUE"
        }
      }
    }
  }
}

以前我有一个类似的问题有点复杂,我从这里的某人那里得到了这个非常简单的答案:

.service.options |= (del(.max, .objectGroupMember) | .attributes|={name})

该 jq 命令甚至在这里也有效,但当然(.max, .objectGroupMember)没有意义,因为它不存在。

我怎样才能达到我想要的结果?

我在 Weeble 对我之前的问题的回答中找到了它:

'.service.options.attributes |= {name}'

对问题的不同看法:

walk(if type=="object" then with_entries(select(.value!="")) else . end)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM