json - 使用 jq 根据条件从 json 中删除键
问题描述
我知道有很多类似的解决方案,但没有一个符合我的情况。我有这个json:
{
"page": 1,
"per_page": 20,
"total": 3,
"saved_objects": [
{
"type": "dashboard",
"id": "f3ea5f20-e773-11ea-8cae-c1046c8b1215"
},
{
"type": "dashboard",
"id": "5c071f30-e797-11ea-8cae-c1046c8b1215"
},
{
"type": "dashboard",
"id": "644a15c0-e79d-11ea-8cae-c1046c8b1215"
}
]
}
如果 id == "f3ea5f20-e773-11ea-8cae-c1046c8b1215" 或 id == "5c071f30-e797-11ea-8cae-c1046c8b1215" 我想删除这个键,所以输出应该是:
{
"page": 1,
"per_page": 20,
"total": 3,
"saved_objects": [
{
"type": "dashboard",
"id": "644a15c0-e79d-11ea-8cae-c1046c8b1215"
}
]
}
我试过了:
jq 'select(.saved_objects[].id != "f3ea5f20-e773-11ea-8cae-c1046c8b1215" and .saved_objects[].id != "5c071f30-e797-11ea-8cae-c1046c8b1215")'
和很多变化,但没有任何效果。我究竟做错了什么?
谢谢你的帮助。
解决方案
你很亲密。
jq '.saved_objects=(
.saved_objects[] |
select (.id != "f3ea5f20-e773-11ea-8cae-c1046c8b1215"
and .id != "5c071f30-e797-11ea-8cae-c1046c8b1215"))
' file.json
推荐阅读
- linux - Linux Pipe viewer,如何拆分管道
- reactjs - Office Fabric React - snapToStep 不适用于滑块
- javascript - Javascript拖放元素
- lua - 零检查,最好的方法?
- c++ - 尝试在 C++ 中对数字列表进行排序
- database - 热分区期间的 Dynamodb 按需成本和扩展(自适应扩展)
- c# - 在 Outlook VSTO C# 中捕获“单击回复/全部回复”事件
- asp.net-mvc - 如何在控制器中获取验证错误?
- node.js - 如何按日期对数据进行排序(json)
- dns - 我如何在谷歌应用引擎中使用自定义域?