这是我的数据结构:
[
{
"name": "name1",
"organizations": [
{
"name": "name2",
"spaces": [
{
"name": "name3",
"otherkey":"otherval"
},
{
"name": "name4",
"otherkey":"otherval"
}
]
}
]
},
{
"name": "name21",
"organizations": [
{
"name": "name22",
"spaces": [
{
"name": "name23",
"otherkey":"otherval"
},
{
"name": "name24",
"otherkey":"otherval"
}
]
}
]
}
]
我只想保留name= name 1,删除name= name 4的嵌套数组对象,并想保留对象的其余部分。我尝试使用map(select),但这只会给予我完整的对象。是否可以在特定的子数组上使用del,并保持其余部分不变?
结果应该是这下面.另外我想要避免枚举所有属性保留在外部对象:
[
{
"name": "name1",
"organizations": [
{
"name": "name2",
"spaces": [
{
"name": "name3",
"otherkey":"otherval"
}
]
}
]
}
]
有什么主意吗?谢谢!
4条答案
按热度按时间voj3qocg1#
一个非常有针对性的解决方案是:
但是,如果允许,您可以考虑:
或:
(If你的jq没有
walk/1
,那么它的jq定义可以很容易地通过谷歌搜索找到。)qacovj5a2#
您可以使用以下命令,它将仅删除
"name": "name4"
阵列。oknrviil3#
下面是使用选择、减少、tostream和delpaths的解决方案
ao218c7q4#
我采用了与@peak类似的方法,但将其颠倒,因此,我们选择不需要的内容并删除,而不是选择您想要的内容并在输出中进行设置。