2015-12-16 3 views
0

Я использую spotify web api, чтобы получить объект json, содержащий информацию об альбоме.Как получить обложку альбома, используя Spotify web api с Gson

Вот модель URL

https://api.spotify.com/v1/search?q=album:arrival%20artist:abba&type=album 

Так скажем, я ищу для альбома "Nevermind" от "Нирваны" и у меня есть этот адрес

https://api.spotify.com/v1/search?q=album:nevermind%20artist:nirvana&type=album

Так что я ve сделал «модельный объект» для Gson здесь

public class SpotifyAlbumInfo { 

    public CollectionInfo collectionInfo; 

    public class CollectionInfo { 

     String href; 
     List<Album> albums;  
     Integer limit; 
     String next;  
     Integer offset; 
     String previous; 
     Integer total6; 

     public class Album{ 
      String album_type; 
      String[] available_markets; 
      Urls external_urls; 
      String href; 
      String id; 
      List<Image> images; 
      String name; 
      String type; 
      String uri; 

      public class Urls{ 
       String source; 
      } 

      public class Image { 
       Integer height; 
       String url; 
       Integer width; 
      } 
     } 
    } 
} 

И вот я пытаюсь получить е первое изображение URL

for(int i=0;i<response.collectionInfo.albums.images.size();i++){  
    if(response.collectionInfo.albums.image.get(i).contains("nevermind")){ 
     imageUrl = response.collectionInfo.albums.images.get(i).url; 
     break; 
    } 
} 

Проблема заключается в том, что это утверждение прекрасно

response.collectionInfo.albums.size(); 

Но я не могу использовать

response.collectionInfo.albums.images.size(); 

Потому что я получаю ошибку symbol does not exist.

Я получаю ту же ошибку для этих утверждений.

response.collectionInfo.albums.images.size(); 
response.collectionInfo.albums.album_type.size(); 
response.collectionInfo.albums.href.size(); 
// etc 

Как я могу идти «слой глубже» в моей «модели объекта» и получить URL изображения я хочу?

+0

Почему вы используете веб-апи вместо Android SDK? –

+0

Я не знал, что могу использовать SDK для этого. –

+0

Я тоже, но стоит посмотреть, а не разбираться в ручном анализе ответов JSON –

ответ

2

Вы должны получить конкретный альбом из списка

collectionInfo.albums 

Там нет images поля для интерфейса List, что некоторый код ошибки, вероятно, пытается вам сказать.

Вы можете развернуть как так

Album album0 = collectionInfo.albums.get(0); 
album0.images.size() 
+0

О, я вижу. Итак, в основном 'response.collectionInfo.albums.get (0) .images.size();' –

+0

Да, просто отслеживайте, с какими объектами вы работаете после каждой точки, и вы будете хороши. Использование автозаполнения действительно помогает с этим –