搜索JSON以查找特定值

时间:2014-08-26 06:58:18

标签: javascript jquery json

我正在尝试从客户端搜索JSON以获取特定值,如果我使用特定键,则线性搜索正在工作但是当我从json中间的键搜索时它什么都不返回。 这是我正在尝试的

$.each(jsonStr, function (i, v) {

    var folderID = '1408614499420';
    if (v['@id'] == folderID) {
        alert(v.folder.file['@id']);
    }

});

我想通过其ID搜索特定文件夹,并获取该特定文件夹中的所有文件。 这是Fiddle与实际的json。

1 个答案:

答案 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;
}

小提琴http://jsfiddle.net/9kw99L2h/9/