我需要搜索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);
});
}
});
});
仅在处理有多个播放列表的“用户”网址时有效。
总结一下我的问题,我需要一种方法来搜索数组的所有级别,以找到类型===播放列表的级别。
答案 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)
答案 2 :(得分:-1)
试试这段代码:
var objJson = jQuery.parseJSON(json);
jQuery.each(objJson , function(i, val) {
alert(val);
});