将抽象JSON对象表示为Java中的模型

时间:2015-07-08 01:23:23

标签: java android json gson

好的,我正在制作API请求,以检索某些内容,如电影,歌曲或ping服务器。但是,所有这些响应都包含在同一个响应JSON对象中,该对象具有不同的字段,具体取决于响应。以下是三个例子。

{
    "response" : {
        "status" : "ok",
        "version" : "0.9.1"
    }
}

getIndexes

{
    "response" : {
        "status" : "ok",
        "version" : "0.9.1",
        "indexes" : {
            "index" : [ { 
                "name" : "A",
                "movie" : [ {
                    "id" : "150",
                    "name" : "A Movie"
                }, {
                    "id" : "2400",
                    "name" : "Another Movie"
                } ]
            }, {
                "name" : "S",
                "movie" : [ { 
                    "id" : "439",
                    "name" : "Some Movie"
                }, {
                    "id" : "209",
                    "name" : "Some Movie Part 2"
                } ]
            } ]
        }
    }
}

getRandomSongs

{
    "response" : {
        "status" : "ok"
        "version" : "0.9.1"
        "randomSongs" : {
            "song": [ {
                "id" : "72",
                "parent" : "58",
                "isDir" : false,
                "title" : "Letter From Yokosuka",
                "album" : "Metaphorical Music",
                "artist" : "Nujabes",
                "track" : 7,
                "year" : 2003,
                "genre" : "Hip-Hop",
                "coverArt" : "58",
                "size" : 20407325,
                "contentType" : "audio/flac",
                "suffix" : "flac",
                "transcodedContentType" : "audio/mpeg",
                "transcodedSuffix" : "mp3",
                "duration" : 190,
                "bitRate" : 858,
                "path" : "Nujabes/Metaphorical Music/07 - Letter From Yokosuka.flac",
                "isVideo" : false,
                "created" : "2015-06-06T01:18:05.000Z",
                "albumId" : "2",
                "artistId" : "0",
                "type" : "music"
            }, {
                "id" : "3135",
                "parent" : "3109",
                "isDir" : false,
                "title" : "Forty One Mosquitoes Flying In Formation",
                "album" : "Tame Impala",
                "artist" : "Tame Impala",
                "track" : 4,
                "year" : 2008,
                "genre" : "Rock",
                "coverArt" : "3109",
                "size" : 10359844,
                "contentType" : "audio/mpeg",
                "suffix" : "mp3",
                "duration" : 258,
                "bitRate" : 320,
                "path" : "Tame Impala/Tame Impala/04 - Forty One Mosquitoes Flying In Formation.mp3",
                "isVideo" : false,
                "created" : "2015-06-29T21:50:16.000Z",
                "albumId" : "101",
                "artistId" : "30",
                "type" : "music" 
            } ]
        }
    }
}

所以基本上我的问题是,我应该如何构建我的模型类来解析这些响应?目前,我有一个抽象的响应对象,只包含状态和版本的字段。但是,通过使用这种方法,我将需要一个响应类来扩展这个抽象类,以便我做出任何请求(例如,AbstractResponse,IndexesResponse,RandomSongsResponse)。此外,根据所提出的API请求,某些具有相同名称的模型可能具有不同的字段。我宁愿避免为每种可能的场景制作模型类。

另外,我正在使用GSON进行JSON序列化/反序列化和Retrofit与API进行通信。

0 个答案:

没有答案