寻找 jq 过滤器以根据嵌套属性的值排除嵌套对象

Gar*_*man 3 nested key filter jq

鉴于此输入:

{
  "10000703": {
    "show_id": 1641788,
  },
  "10000838": {
    "show_id": 1517903,
  },
  "10001325": {
    "show_id": 1641788,
  },
}
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个过滤器来说明“返回show_id不等于的所有对象1641788

预期输出将是:

{
  "10000838": {
    "show_id": 1517903,
  },
}
Run Code Online (Sandbox Code Playgroud)

无法排除嵌套对象:(

pea*_*eak 5

这是with_entries/1jq 可能带来的便利和简洁的一个很好的例子:

with_entries( select(.value.show_id != 1641788 ))
Run Code Online (Sandbox Code Playgroud)

with_entries/1将对象转换为显式的 .key/.value 表示。有关详细信息,请参阅jq 手册

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

del( .[] | select( .show_id == 1641788 ) )
Run Code Online (Sandbox Code Playgroud)