我正在尝试从客户端搜索JSON以获取特定值,如果我使用特定键,则线性搜索正在工作但是当我从json中间的键搜索时它什么都不返回。 这是我正在尝试的
$.each(jsonStr, function (i, v) {
var folderID = '1408614499420';
if (v['@id'] == folderID) {
alert(v.folder.file['@id']);
}
});
我想通过其ID搜索特定文件夹,并获取该特定文件夹中的所有文件。 这是Fiddle与实际的json。
答案 0 :(得分:1)
你想要这样的东西
$("#menuArea li").live('click', function (event) {
$.each(jsonStr.hierarchy.folder["folder"], function (i, v) {
var folderID ='1408614499420';//any id of folder
if (v['@id'] == folderID) {
alert(v.file['@id']);//file where folder id is folderID
}
});
event.stopPropagation();
});
这是工作小提琴 http://jsfiddle.net/9kw99L2h/6/
修改: -
获取所有子文件夹的代码&文件
function getAllSubFolders(folder) {
var subFolders = [];
if (folder.folder) {
if (folder.folder instanceof Array) {
for (var i = 0; i < folder.folder.length; i++) {
subFolders[subFolders.length] = folder.folder[i]['@id'];
subFolders = subFolders.concat(getAllSubFolders(folder.folder[i]))
}
} else {
subFolders[subFolders.length] = folder.folder['@id'];
subFolders = subFolders.concat(getAllSubFolders(folder.folder))
}
}
return subFolders;
}
function getAllFiles(folder) {
var files = [];
if (folder.file) {
if (folder.file instanceof Array) {
for (var i = 0; i < folder.file.length; i++) {
files[files.length] = folder.file[i]['@id'];
}
} else {
files[files.length] = folder.file['@id'];
}
}
if (folder.folder) {
files = files.concat(getAllFiles(folder.folder));
}
return files;
}