jQuery - 搜索 JSON 数组

标签 jquery html json

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

以下是两种 url 类型。

这是一个仅包含一级信息的播放列表。 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);
        });
    }
});

});

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

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

最佳答案

这应该可以满足您的需求。

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

更新:

这将适用于任一 URL。另外,这里有一个更高级的客户端输出的 fiddle :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);
    }
};

关于jQuery - 搜索 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12672157/

相关文章:

jQuery追加用img替换图像

javascript - Python Django - 模板标记中的 {% request.user.is_authenticated %} 不适用于 JS

javascript - 如何读取nexus 7中的宽度和高度?

json - 在golang中解析json文件

sql-server - 在 SQL Server 中获取 `FOR JSON AUTO` 结果的长度?

jquery - 为什么我在 IE 9 中丢失 Ajax 请求的 cookie 和 session

IE9 中的 jquery 事件传播问题

jquery - 带有鼠标检测的水平jquery滚动也可以在div中滚动overflow-y

javascript - 使用母版页时的事件元素

json - logstash_forwarder已连接到Lostash服务器IP,但从未收到事件