Java 解析JSON并从中删除对象是一个错误
我有一个phonegap应用程序,我想在下载前删减图片。 我将一个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
[{"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); }
});
}