jQuery - 通过JSON数组搜索

时间:2012-10-01 11:11:34

标签: jquery html json

我需要搜索JSON数据并查找包含“kind”“播放列表”的每个对象,然后浏览轨道并提取将放入hmtl列表的信息。问题是在某些情况下(取决于URL的类型)而不是包含所有对象的多维数组,json信息只是一个单个对象。

以下是两种网址类型。

这是一个播放列表,只包含一个级别的信息。 http://api.soundcloud.com/playlists/1980151.json?client_id=bcc776e7aa65dbc29c40ff21a1a94ecd

这是一个只包含多个播放列表作为对象的数组。 http://api.soundcloud.com/users/dubstep/playlists.json?client_id=bcc776e7aa65dbc29c40ff21a1a94ecd

我目前的代码是:

$.getJSON('http://api.soundcloud.com/users/dubstep/playlists.json?client_id=bcc776e7aa65dbc29c40ff21a1a94ecd', { get_param: 'value' }, function(url_data) {
$.each(url_data, function (i, elem) {
    if (elem.kind === 'playlist') {
        $.each(elem.tracks, function (i, elem) {
            console.log(elem.title);
        });
    }
});

});

在处理有多个播放列表的“用户”网址时有效。

总结一下我的问题,我需要一种方法来搜索数组的所有级别,以找到类型===播放列表的级别。

3 个答案:

答案 0 :(得分:12)

这应该做你想要的。

$.each(json, function (i, elem) {
    if (elem.kind === 'playlist') {
        $.each(elem.tracks, function (i, elem) {
            console.log(elem.title);
        });
    }
});

<强>更新

这适用于任何一个网址。此外,这里有一个更高级的客户端输出:http://jsfiddle.net/jTLvE/

var parse = function (json) {
    $.each(json, function (i, elem) {
        if (elem.kind === 'playlist') {
            $.each(elem.tracks, function (i, elem) {
                console.log(elem.title);
            });
        }
    });
},
parseReturnedData = function (json) {
    var isObject = (typeof json === 'object' && json instanceof Object),
        isArray = (typeof json === 'object' && json instanceof Array),
        newArray = [];
    if (isArray) {
        parse(json);
    } else if (isObject) {
        newArray.push(json);
        parse(newArray);
    }
};

答案 1 :(得分:0)

你试过json path吗?我使用它并且它很小而且速度快,特别是对于搜索json树(用于搜索和写入我会使用flock)。

答案 2 :(得分:-1)

试试这段代码:

var objJson = jQuery.parseJSON(json);
jQuery.each(objJson , function(i, val) {
      alert(val);
    });