我需要搜索 JSON 数据并找到包含“种类”“播放列表”的每个对象,然后遍历曲目并提取将放入 hmtl 列表中的信息。问题在于,在某些情况下(取决于 URL 的类型),json 信息只是一个单一对象,而不是包含所有对象的多维数组。
下面是两种 url 类型。
这是一个仅包含一层信息的播放列表。http://api.soundcloud.com/playlists/1980151.json?client_id=bcc776e7aa65dbc29c40ff21a1a94ecd http://api.soundcloud.com/playlists/1980151.json?client_id=bcc776e7aa65dbc29c40ff21a1a94ecd
这是一个仅包含多个播放列表作为对象的数组。http://api.soundcloud.com/users/dubstep/playlists.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);
});
}
});
});
It only在处理有多个播放列表的“用户”url 时有效。
总结一下我的问题是什么,我需要一种方法来搜索数组的所有级别,以查找具有 kind === 播放列表的级别。
这应该可以满足您的要求。
$.each(json, function (i, elem) {
if (elem.kind === 'playlist') {
$.each(elem.tracks, function (i, elem) {
console.log(elem.title);
});
}
});
UPDATE:
这适用于任一 URL。另外,这里有一个更高级的客户端输出的小提琴:http://jsfiddle.net/jTLvE/ 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);
}
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)