像
这样的随机查询https://api.soundcloud.com/tracks.json?genre=Rnbhiphop
给出类似
的内容[
{
"kind":"track",
"id":161532719,
(...)
"artwork_url":null,
(...)
},
{
"kind":"track",
"id":161532718,
(...)
"artwork_url":null,
(...)
},
(..)
]
在许多情况下,artwork_url为null,尽管这不一致。
然而,当使用
查看单曲目ID 161532719(上面的列表中的第一个)时http://api.soundcloud.com/tracks/161532719.json
我们得到了
{
"kind":"track",
"id":161532719,
(...)
"artwork_url":"http://i1.sndcdn.com/artworks-000087026689-ogd56p-large.jpg?e76cf77",
(...)
}
...奇怪的是,它显示了轨道161532719有效的artwork_url。许多其他曲目也是如此。
这是一个错误,还是我在这里做错了什么?
答案 0 :(得分:1)
它看起来像集合端点(在这种情况下是类型),有一个后端错误,其中没有提取艺术作品。
null
与undefined不同,而是故意设置。如果遇到空值,则可以使用从单轨道端点收集的数据,将其从那里聚合到轨道数据。
如果您选择这样做,我建议您获取轨道端点的请求,第二个您拥有所需的ID,并使用ID进行更新。
答案 1 :(得分:1)
如果曲目的上传者没有附加图片,Soundcloud会显示上传者的头像。 但是,当你试图获得" artwork_url"从这种类型的轨道的JSONObject中,你将获得" null"。
要解决此问题,并使用相同的逻辑Soundcloud使用,只需添加:
String artUrl = trackJson.getString("artwork_url");
if (artUrl == "null") {
JSONObject user = trackJson.getJSONObject("user");
artUrl = user.getString("avatar_url");
}