Android 如何使用TypeAdapterFactory创建Gson对象以匹配我的POKO模型?
我成功地使用以下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
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)
}