我正在将我的项目序列化客户端从 GSON 迁移到 KotlinxSerialization 并遇到一个问题:来自 API 的所有响应都继承了一个抽象类,例如:
abstract class BaseResponse <T> (
val type: String? = null,
val payload: T? = null){
当我尝试从 API 获得响应时,我使用该类
@Srializable
class LoginResponse: BaseResponse <LoginResponse.LoginPayload> (){
class LoginPayload(val s: Int)
}
并得到序列化错误 java.lang.NoSuchFieldError: No field typeSerial0 of type Lkotlinx / serialization / KSerializer;在类 Lru / .../ response / LoginResponse $$ 序列化程序中;或其超类
据我了解,反序列化器首先尝试反序列化父类的字段,并且不了解如何反序列化有效负载。这个问题花了两天时间,不知道怎么解决。