Android 如何使用TypeAdapterFactory创建Gson对象以匹配我的POKO模型?

Android 如何使用TypeAdapterFactory创建Gson对象以匹配我的POKO模型?,android,kotlin,gson,retrofit,Android,Kotlin,Gson,Retrofit,我成功地使用以下POKO进行了改装: data class GifSerialList(var data: List<GifSerial>) data class GifSerial(var id: String, var title: String, @SerializedName("import_datetime") var importDatetime: String, var

我成功地使用以下POKO进行了改装:

data class GifSerialList(var data: List<GifSerial>)
data class GifSerial(var id: String,
                 var title: String,
                 @SerializedName("import_datetime") var importDatetime: String,
                 var user: User?,
                 var images: Image)
data class User(@SerializedName("display_name") var userDisplayName: String)
data class Image(@SerializedName("fixed_height") var fixedHeight: Size)
data class Size(var url: String)
具有以下改装请求:

@GET("trending")
fun getTrending(@Query("api_key") apiKey: String): Call<GifSerialList>
问题:

TypeAdapterFactory-read(输入:JsonReader)是一种正确的方法吗

在我的案例中,我应该使用TypeAdapterFactory的哪种改装请求

fun getTrending(@Query("api_key") apiKey: String): Call<List<Gif>>
fun getTrending(@Query("api_key") apiKey: String): Call<Gif>
fun getTrending(@Query("api_key") apiKey: String): Call<GifSerialList>

如何选择所需的json Gif POKO元素并一起返回它们?我需要在这里创建一个json元素列表,然后返回吗?

您可以使用GSON解析
json
文件并接收Kotlin对象(或它们的列表):您解决了这个问题吗?没有。甚至不确定我是否应该在read()方法中创建json树或json对象值。在改造请求中,我要求提供一个列表,所以我应该在write()方法或Gif对象中构建json树吗?如何理解json树:[{id,import\u datetime,display\u name,url,title},…]。这是delegate.fromJsonTree所期望的吗?如果是这样的话,我应该使用什么方法将其组合在一起?您可以使用GSON解析
json
文件并接收Kotlin对象(或它们的列表):您解决了这个问题吗?没有。甚至不确定我是否应该在read()方法中创建json树或json对象值。在改造请求中,我要求提供一个列表,所以我应该在write()方法或Gif对象中构建json树吗?如何理解json树:[{id,import\u datetime,display\u name,url,title},…]。这是delegate.fromJsonTree所期望的吗?如果是这样的话,我应该用什么方法把它组合起来?
data class Gif(var id: String,
           var title: String,
           @SerializedName("display_name") var authorDisplayName: String?,
           @SerializedName("import_datetime") var importDateTime: String,
           var url: String) : Parcelable
fun getTrending(@Query("api_key") apiKey: String): Call<List<Gif>>
fun getTrending(@Query("api_key") apiKey: String): Call<Gif>
fun getTrending(@Query("api_key") apiKey: String): Call<GifSerialList>
override fun read(input: JsonReader): T {
                var jsonElement = elementAdapter.read(input)
                var jsonObject = jsonElement.asJsonObject
                val jsonArray = jsonObject.getAsJsonArray("data")
                for (item in jsonArray) {
                    Log.d(TAG, "item: $item")
                    jsonObject = item.asJsonObject
                }
                jsonElement = jsonObject
                return delegate.fromJsonTree(jsonElement)
            }