gson 无法反序列化泛型类型T莫希

ehxuflar  于 2022-11-06  发布在  其他
关注(0)|答案(2)|浏览(224)

对不起,如果这是一个基本的问题,但我是新来的莫希。
所以,我有一个类,泛型类型参数如下:

class BaseResponse<T> {
   @Json(name = "message")
   var message: String? = null
   @Json(name = "data")
   var data: T? = null
   @Json(name = "meta")
   var meta: JsonObject? = null
   @Json(name = "error")
   var error: ErrorResponse? = null
}

在GSON中,这是自动完成的,只要我提供@SerializedName(“data”)并在我的改型方法中扩展BaseResponse,它就可以工作。但是它返回莫希错误,因为我无法反序列化BaseResponse。我该如何修复这个问题?

mec1mxoz

mec1mxoz1#

在代码中替换泛型类型的基类和类都必须用**@JsonClass(generateAdapter = true)进行注解。请注意,为了将json正确地转换为模型类(如此类),最重要的事情是将基类中的字段声明为var而而不是瓦尔**。请查看下面的示例:

@JsonClass(generateAdapter = true)
 class BaseResponse<T> {

   @Json(name = "message")
   var message: String? = null
   @Json(name = "data")
   var data: T? = null
   @Json(name = "meta")
   var meta: JsonObject? = null
   @Json(name = "error")
   var error: ErrorResponse? = null
}

Api示例:

@GET("api/info")
suspend fun getInfo(): BaseResponse<Info>

简介:

@JsonClass(generateAdapter = true)
data class Info(
    val language: String? = null,
    val profile: Profile? = null
)
oxosxuxt

oxosxuxt2#

在莫希中,您必须显式地将注解声明为字段注解,如@field:Json(name = "message")

相关问题