Arrays 删除包含特定键JSON的对象
您好,我有一个类似于followin的JSON文件:Arrays 删除包含特定键JSON的对象,arrays,json,key,Arrays,Json,Key,您好,我有一个类似于followin的JSON文件: {"a" :[ { "b": "name_1", "c":[ {"d": "value_1", "e": "true"}, {"d": "value_2"}, {"d": "value_3", "e": "true"} ]
{"a" :[
{
"b": "name_1",
"c":[
{"d": "value_1", "e": "true"},
{"d": "value_2"},
{"d": "value_3", "e": "true"}
]
},
{
"b": "name_2",
"c":[
{"d": "value_4", "e": "true"},
{"d": "value_5"},
{"d": "value_6"}
]}
]
}
我想删除“c”中包含键“e”的每个对象
我试着用JQ做,但是我不能得到正确的命令/过滤器
最近的一次我来了 检查你的链接,我发现你的删除返回空值 您可能希望使用
拼接
,而不是删除
参考:
否则,您可以使用地图中的地图执行此操作
var obj = {"a" :[
{
"b": "name_1",
"c":[
{"d": "value_1", "e": "true"},
{"d": "value_2"},
{"d": "value_3", "e": "true"}
]
},
{
"b": "name_2",
"c":[
{"d": "value_4", "e": "true"},
{"d": "value_5"},
{"d": "value_6"}
]}
]
}
//console.log('obj is: ', obj)
//console.log('obj.a is: ', obj.a)
var array = obj.a
var x = array.map(function(eachThing) {
var newArr = eachThing.c
newArr.map(function(eachObj) {
console.log(eachObj)
if (eachObj.e === "true")
console.log('delete this!')
})
})
x
jsIDLE:要删除包含您必须键入的密钥的对象,请执行以下操作:
jq 'del( .a[].c[] | select(has("e")))'
感谢@steeldriver在本文中回答了这个问题