Unable to create converter for xxx.NetworkResponse<Auth> for method AuthService

BUG解决要点

  • @POST + @Body 必须写

  • NetworkResponse<T> 必须是 @Serializable data class

  • Auth 必须 @Serializable

  • 不要用 sealed / Any

哪怕 Auth 是 @Serializable,只要 NetworkResponse 有下面任意一条,就一定失败:

  • ❌ 没有 @Serializable
  • ❌ 是 sealed class
  • ❌ 是 open class
  • ❌ 有 Any / Map<String, Any>
  • ❌ 泛型 T 没有限定
  • ❌ 有自定义构造逻辑

Retrofit 会在创建接口代理时直接抛这个异常。

gradle(非常关键,很多人漏)

js 复制代码
dependencies {
    implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3")
    implementation("com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:0.8.0")
}
js 复制代码
plugins {
    id("org.jetbrains.kotlin.plugin.serialization")
}

代码示例

如果是Body的JSON请求,必须添加**@Body**

kotlin 复制代码
interface AuthService {

    @POST("login/password")
    suspend fun loginByPassword(
        @Body params: Map<String, String>
    ): NetworkResponse<Auth>
}
kotlin 复制代码
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class NetworkResponse<T>(
    @SerialName("code")
    val code: Int,

    @SerialName("message")
    val message: String,

    @SerialName("data")
    val data: T? = null
)
kotlin 复制代码
import kotlinx.serialization.Serializable

@Serializable
data class Auth(
    val token: String,
    val refreshToken: String,
    val expire: Long
)

根因是 kotlinx.serialization 无法为 NetworkResponse 生成 Serializer

相关推荐
渣渣xiong9 小时前
从零开始:前端转型AI agent直到就业第五天-第十一天
前端·人工智能
布局呆星9 小时前
Vue3 | 组件通信学习小结
前端·vue.js
C澒9 小时前
IntelliPro 企业级产研协作平台:前端智能生产模块设计与落地
前端·ai编程
OpenTiny社区10 小时前
重磅预告|OpenTiny 亮相 QCon 北京,共话生成式 UI 最新技术思考
前端·开源·ai编程
前端老实人灬10 小时前
web前端面试题
前端
Moment11 小时前
AI 全栈指南:NestJs 中的 Service Provider 和 Module
前端·后端·面试
IT_陈寒11 小时前
为什么我的JavaScript异步回调总是乱序执行?
前端·人工智能·后端
Moment11 小时前
AI全栈入门指南:NestJs 中的 DTO 和数据校验
前端·后端·面试
小码哥_常11 小时前
告别RecyclerView卡顿!8个优化技巧让列表丝滑如德芙
前端
小村儿11 小时前
Harness Engineering:为什么你用 AI 越用越累?
前端·后端·ai编程