我有以下JSON数组(简化示例):
[ {
"op": "remove",
"path": "/cache"
},
{
"op": "add",
"path": "/game_config"
},
{
"op": "remove",
"path": "/use_replication"
},
{
"op": "add",
"path": "/copy_replication"
}
]
我想从数组中删除包含“复制”的对象。结果将是:
[ {
"op": "remove",
"path": "/cache"
},
{
"op": "add",
"path": "/game_config"
}
]
我找到了一种方法来获得它们:
.[] | select( .path | contains("replication"))
但是我找不到从数组中删除它们的方法,保留所有其他对象。
答案 0 :(得分:1)
我找到了另一种方法(我错过了接受答案中的'not'):
.[] | (select( .path | contains("value") | not ))
答案 1 :(得分:0)
使用not
可以实现否定。在您的情况下,由于您提到使用正则表达式,您可以使用test/1
,如下所示:
map( select(.path | test("replication") | not))