2016-07-12 12 views
0

こんにちは、私はgsonでjsonを非直列化するいくつかの問題があります。リストにデシリアライズしようとするとエラーは発生しませんが、リストiの内容を表示しようとするとjava.lang.NullPointerExceptionが見つかりました。ここでgsonでデシリアライズしているときにnullPointerExceptionが発生しました

は、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": [] 
 
}

は私のモデルである:

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; 
 
    } 
 
}

私はこのようなデシリアライズしよう:

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; 
 
    }

私はこのエラー

W/System.errのだ:インターフェイスメソッドを呼び出すための試み 'int型java.util.List.size()':java.lang.NullPointerExceptionがnullのオブジェクト参照の場合

"Log.d("詳細情報 "、r.myPlaylistDetails.size()+" ");"私はきちんと

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

を私のJSONをデシリアライズすることにより、

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

を交換した

+0

この質問は非常に広いです。可能な限り単純なケースに絞り込んでください。たとえば、モデルとサンプルデータが1つのフィールドしか持たない場合は問題はありませんか?ランタイムエラーが表示されますか? –

+0

ありがとう、私は私の問題の修正を見つけた、私は私の次の投稿のためにそれを行います。 – Aseith

答えて

0

は、このように私の詳細を表示:

Log.d("deser details", r.title); 
関連する問題