在保留周围结构的同时过滤 JSON w/ jq 内的数组
Filter an array inside JSON w/ jq while retaining surrounding structure
JSON 数据如下,我想在 "bar"="cccc" 时丢弃而不改变结构。
{
"foofoo": {
"barbar": [
{
"foo": "0000",
"bar": "aaaa"
},
{
"foo": "1111",
"bar": "bbbb"
},
{
"foo": "2222",
"bar": "cccc"
}
]
}
}
像这样的东西可以解决问题,但它会改变 JSON 结构。
.foofoo.barbar[] | select(.bar !="cccc")
结果:
{
"foo": "0000",
"bar": "aaaa"
}
{
"foo": "1111",
"bar": "bbbb"
}
需要的结果是:
{
"foofoo": {
"barbar": [
{
"foo": "0000",
"bar": "aaaa"
}
{
"foo": "1111",
"bar": "bbbb"
}
]
}
}
谢谢!
您尝试的问题是您通过编写 .foofoo.barbar[].
扩展了 .foofoo.barbar
您想要的是重置它:
.foofoo.barbar |= map(select(.bar !="cccc"))
JSON 数据如下,我想在 "bar"="cccc" 时丢弃而不改变结构。
{
"foofoo": {
"barbar": [
{
"foo": "0000",
"bar": "aaaa"
},
{
"foo": "1111",
"bar": "bbbb"
},
{
"foo": "2222",
"bar": "cccc"
}
]
}
}
像这样的东西可以解决问题,但它会改变 JSON 结构。
.foofoo.barbar[] | select(.bar !="cccc")
结果:
{
"foo": "0000",
"bar": "aaaa"
}
{
"foo": "1111",
"bar": "bbbb"
}
需要的结果是:
{
"foofoo": {
"barbar": [
{
"foo": "0000",
"bar": "aaaa"
}
{
"foo": "1111",
"bar": "bbbb"
}
]
}
}
谢谢!
您尝试的问题是您通过编写 .foofoo.barbar[].
扩展了 .foofoo.barbar您想要的是重置它:
.foofoo.barbar |= map(select(.bar !="cccc"))