寻找一个 jq 过滤器,根据嵌套属性的值排除嵌套对象。

4

鉴于这个输入:

{
  "10000703": {
    "show_id": 1641788,
  },
  "10000838": {
    "show_id": 1517903,
  },
  "10001325": {
    "show_id": 1641788,
  },
}

我正在寻找一个筛选器,可以返回所有 show_id 不等于 1641788 的对象。

期望的输出结果如下:

{
  "10000838": {
    "show_id": 1517903,
  },
}

我一直无法排除嵌套对象 :(


1
你尝试过什么? - paulsm4
我尝试了很多与 walk/1del() 有关的事情,但是 with_entries/1 是我所需要的。 - Garrett Boatman
1个回答

6
这是一个很好的例子,展示了使用 with_entries/1 的便利性和 jq 可能实现的简洁性:
with_entries( select(.value.show_id != 1641788 ))

with_entries/1 可以将一个对象转换为明确的.key/.value表示。有关详细信息,请参阅jq手册

或者,更简洁地,在这种情况下也可以使用del/1

del( .[] | select( .show_id == 1641788 ) )

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接