Java 解析JSON并从中删除对象是一个错误

Java 解析JSON并从中删除对象是一个错误,java,javascript,jquery,json,cordova,Java,Javascript,Jquery,Json,Cordova,我有一个phonegap应用程序,我想在下载前删减图片。 我将一个JSON对象传递给我的函数 [{"name":"aaa.jpg","link":"https:\/\/www.abc.com\/aaa.jpg"},"name":"bbb.jpg","link":"https:\/\/www.abc.com\/\/bbb.jpg"}] 并使用下面的函数进行解析和删除 function prunePictures(pictures) { for ( var i = 0; i < en

我有一个phonegap应用程序,我想在下载前删减图片。 我将一个JSON对象传递给我的函数

[{"name":"aaa.jpg","link":"https:\/\/www.abc.com\/aaa.jpg"},"name":"bbb.jpg","link":"https:\/\/www.abc.com\/\/bbb.jpg"}]
并使用下面的函数进行解析和删除

function prunePictures(pictures) {
    for ( var i = 0; i < entries.length; ++i) {
            var name = entries[i].name;
            $.each(pictures, function(i, obj) {
                if (obj.name == name) {
                    delete pictures[i];
                }
            });
     }
}
函数(图片){
对于(变量i=0;i

但是它没有经过循环,我收到一个错误“无法读取未定义的属性'name'”

您的json字符串缺少大括号:

[{"name":"aaa.jpg","link":"https:\/\/www.abc.com\/aaa.jpg"},{"name":"bbb.jpg","link":"https:\/\/www.abc.com\/\/bbb.jpg"}]
编辑 我认为你的json只是有一个输入错误,因为这不是你会得到的错误

您不应该从
$中删除。每个
都应该使用
$。grep

参见信息


…您不想删除图片对象。 您想将其从阵列中拼接出来

删除它会在阵列中留下一个孔,而拼接它会删除该孔

var l = entries.length, i = 0, pictureName;

for (; i < l; i += 1) {
    pictureName = entries[i].name;
    pictures.forEach(function (picture, i, arr) {
        if (pictureName === picture.name) { arr.splice(i, 1); }
    });
}
var l=entries.length,i=0,pictureName;
对于(;i

如果实体中的对象具有相同的
名称
属性,则删除图片中的对象。

然后
条目[i]
对象
计算为未定义。在调试环境中,在for循环的开头添加一个console.log(条目[i])。在每个函数的开头添加一个console.log(obj)或console.log(i)。这应该告诉你你需要知道的。是的,JSON缺少一个
{
。非常感谢。这段代码对我来说很有用。我向其他人道歉缺少“{”,这是一个打字错误。感谢所有人发布回复。它帮助我调试了我的代码。@agreco:$grep在我的情况下不起作用,但现在我知道它的用法了。谢谢
var l = entries.length, i = 0, pictureName;

for (; i < l; i += 1) {
    pictureName = entries[i].name;
    pictures.forEach(function (picture, i, arr) {
        if (pictureName === picture.name) { arr.splice(i, 1); }
    });
}