在保留周围结构的同时过滤 JSON w/ jq 内的数组

Filter an array inside JSON w/ jq while retaining surrounding structure

JSON 数据如下,我想在 "bar"="cccc" 时丢弃而不改变结构。

{
      "foofoo": {
        "barbar": [
          {
            "foo": "0000",
            "bar": "aaaa"
          },
          {
            "foo": "1111",
            "bar": "bbbb"
          },
          {
            "foo": "2222",
            "bar": "cccc"
          }
          ]
      }
}

像这样的东西可以解决问题,但它会改变 JSON 结构。

.foofoo.barbar[] | select(.bar !="cccc")

结果:

{
  "foo": "0000",
  "bar": "aaaa"
}
{
  "foo": "1111",
  "bar": "bbbb"
}

需要的结果是:

{
  "foofoo": {
    "barbar": [
    {
      "foo": "0000",
      "bar": "aaaa"
    }
    {
      "foo": "1111",
      "bar": "bbbb"
    }
    ]
  }
}

谢谢!

您尝试的问题是您通过编写 .foofoo.barbar[].

扩展了 .foofoo.barbar

您想要的是重置它:

.foofoo.barbar |= map(select(.bar !="cccc"))