我现在正在玩JQ, a JSON command line tool。我一直找不到能够帮助我解决一个相对简单的问题的资源。

用例是我的JSON文件具有我不需要的各种其他东西(最多500mb),如果我可以杀死特定 key 的数据,它将减少到将近1mb。

假设我有以下JSON:

{
  "pages": {
    "elems": { ... stuff ... }
  },
  "actions": {
    "pages": { ... stuff ... }
  }
}

我将运行哪种命令来删除第一级pages的整个对象和键,但完整保留较低一级的pages

预期产量:
{
  "actions": {
    "pages": { ... stuff ... }
  }
}

我尝试运行:jq -c 'del(.pages)' myfile.json >outputfile.json但是,它似乎也破坏了所有称为pages的子项键,结果是:
{
  "actions": {}
}

任何帮助,将不胜感激。

最佳答案

我相信您最初的尝试应该会按预期进行。这是我尝试时得到的:

$ jq 'del(.pages)' myfile.json
{
  "actions": {
    "pages": {
      "stuff": "..."
    }
  }
}
Try it online at jqplay.org
要删除所有页面,您需要
$ jq 'del(.. | .pages?)' myfile.json
{
  "actions": {}
}
Try it online at jqplay.org

关于json - 使用jq从父对象中删除 key ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47023795/

10-11 22:32
查看更多