json - 过滤掉包含特定键/值对的子数组项
问题描述
我想使用 jq 过滤掉包含特定键/值对的子数组项,而不过滤掉非数组数据。
输入:
{
"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"))
推荐阅读
- javascript - 如何在单击其他按钮时将来自按钮单击的控制台值转换为数组格式
- excel - Excel:type() 和 WorksheetFunction.IsText() 因长字符串而失败
- php - Wordpress get_the_excerpt 而不是 $post->post_excerpt
- java - java.io.IOException:无法将 remoting.jar 复制到代理上的“/root/jenkins”中
- ruby-on-rails - 用户控制器中的 ActionController::UnknownFormat#show_friend
- r - 使用闪亮生成可下载并使用 dplyr 函数的数据表
- python-3.x - 如何使用 python ImageDraw 绘制具有弯曲边的形状
- python - 如何将列表中的值引用到字典键值?
- algorithm - 评估 10,000 条规则的最快算法是什么?
- javascript - firebase 身份验证一位用户