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