Json 筛选出包含特定键/值对的子数组项

Json 筛选出包含特定键/值对的子数组项,json,jq,Json,Jq,我想使用jq过滤掉包含特定键/值对的子数组项,而不过滤掉非数组数据 输入: { "log": { "foo": { ... }, "entries": [ { "request": { "method": "OPTIONS", "url": "http://www.foobar.com" } }, { "request": {

我想使用jq过滤掉包含特定键/值对的子数组项,而不过滤掉非数组数据

输入:

{
  "log": {
    "foo": {
      ...
    },
    "entries": [
      {
        "request": {
          "method": "OPTIONS",
          "url": "http://www.foobar.com"
        }
      },
      {
        "request": {
          "method": "GET",
          "url": "http://www.foobar.com"
        }
      }
    ]
  }
}
期望输出:

{
  "log": {
    "foo": {
      ...
    },
    "entries": [
      {
        "request": {
          "method": "GET",
          "url": "http://www.foobar.com"
        }
      }
    ]
  }
}
我试过这个:

jq '(.log.entries[] | select(.request.method != "OPTIONS"))'

但是,我会丢失上面所有的JSON数据。

使用
|=
赋值运算符修改子元素,例如:

.log.entries |= map(select(.request.method != "OPTIONS"))
直接对符合条件的对象使用
del()
操作

del(.log.entries[] | select(.request.method == "OPTIONS"))