2016-07-12 17 views
0

Hallo an alle ich habe ein paar Probleme, meine JSON mit Gson zu deserialisieren, wenn ich versuche, in meine Liste zu deserialisieren ich fange keine Fehler, aber wenn ich versuche, den Inhalt der Liste anzuzeigen habe eine java.lang.NullPointerException bekommen. Hierjava.lang.NullPointerException beim Deserialisieren mit Gson

ist die json:

{ 
 
    "_id": "577f81286ed8b475f5faf6fb", 
 
    "title": "bad (feat. vassy) [radio edit]", 
 
    "album": "Listen", 
 
    "artist": { 
 
    "_id": "577f81140e8784358e32ae2d", 
 
    "name": "david guetta" 
 
    }, 
 
    "genre": { 
 
    "_id": "577f81140e8784358e32ae2e", 
 
    "name": "dance" 
 
    }, 
 
    "duration": "2m50s", 
 
    "year": 2014, 
 
    "artwork": { 
 
    "small": "https://i.scdn.co/image/f59354f8d3f2841e44c1bd7aa0cd55a22843cfc7", 
 
    "medium": "https://i.scdn.co/image/9b092f765831793404d46b816d688135ff32735f", 
 
    "large": "https://i.scdn.co/image/6e94ab39c917096d876b895dbab0019953d27a96", 
 
    "default": "https://i.scdn.co/image/6e94ab39c917096d876b895dbab0019953d27a96" 
 
    }, 
 
    "extraGenres": [], 
 
    "extraArtists": [] 
 
}

Hier ist mein Modell:

public class SongDetails { 
 

 
    public String _id; 
 
    public String title; 
 
    public String album; 
 

 
    public String duration; 
 
    public int year; 
 

 
    @SerializedName("artist") Artist artist; 
 
    public static class Artist { 
 
     public String _id; 
 
     public String name; 
 
    } 
 

 
    @SerializedName("genre") Genre genre; 
 
    public static class Genre { 
 
     public String _id; 
 
     public String name; 
 
    } 
 

 

 
    @SerializedName("artwork") Artwork artwork; 
 
    public static class Artwork { 
 
     public String small; 
 
     public String medium; 
 
     public String large; 
 
     @SerializedName("default") 
 
     public String defaultX; 
 
    } 
 

 
    @SerializedName("votes") public VotesPlayer votes; 
 
    public static class VotesPlayer { 
 
     public int upVotes; 
 
     public int downVotes; 
 
     public int standing; 
 
     public String by; 
 
    } 
 
}

Ich versuche so deserialisieren:

Gson gson = new Gson(); 
 
Log.d("playdetails to des", toDeserialize); 
 
// toDeserialize = {"_id":"577f81286ed8b475f5faf6fb","title":"bad (feat. vassy) [radio edit]","album":"Listen","artist":{"_id":"577f81140e8784358e32ae2d","name":"david guetta"},"genre":{"_id":"577f81140e8784358e32ae2e","name":"dance"},"duration":"2m50s","year":2014,"artwork":{"small":"https://i.scdn.co/image/f59354f8d3f2841e44c1bd7aa0cd55a22843cfc7","medium":"https://i.scdn.co/image/9b092f765831793404d46b816d688135ff32735f","large":"https://i.scdn.co/image/6e94ab39c917096d876b895dbab0019953d27a96","default":"https://i.scdn.co/image/6e94ab39c917096d876b895dbab0019953d27a96"},"extraGenres":[],"extraArtists":[]} 
 
try { 
 
     Response r = gson.fromJson(toDeserialize, Response.class); 
 
     Log.d("deser details", r.myPlaylistDetails.size()+""); 
 
    } catch (Exception e) { 
 
      e.printStackTrace(); 
 
    } 
 

 
public class Response { 
 
     public List<SongDetails> myPlaylistDetails; 
 
    }

ich diesen Fehler erhielt

W/System.err: java.lang.NullPointerException: Versuch Interface-Methode 'int java.util.List.size()' aufzurufen auf einem Nullobjekt Referenz

an der Zeile der: "Log.d (" Details ", r.myPlaylistDetails.size() +" ");"

+0

Diese Frage ist sehr breit. Versuchen Sie, es auf den einfachsten möglichen Problemfall zu beschränken, zum Beispiel funktioniert es, wenn Ihre Modell- und Beispieldaten nur ein Feld haben? Sehen Sie Laufzeitfehler? Siehe [Minimales, vollständiges und verifizierbares Beispiel] (http://stackoverflow.com/help/mcve) –

+0

Vielen Dank, ich habe eine Lösung für mein Problem gefunden, ich werde das für meinen nächsten Beitrag tun. – Aseith

Antwort

0

Ich habe

ersetzt
Response r = gson.fromJson(toDeserialize, Response.class); 

durch meine Json deserialisieren richtig

SongDetails r = gson.fromJson(toDeserialize, SongDetails.class); 

dann so meine Details anzuzeigen:

Log.d("deser details", r.title); 
Verwandte Themen