安顺市网站建设_网站建设公司_移动端适配_seo优化
2025/12/18 18:15:56 网站建设 项目流程

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

体验AI代码助手

代码解读

复制代码

dependencies { implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3") implementation("com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:0.8.0") }

js

体验AI代码助手

代码解读

复制代码

plugins { id("org.jetbrains.kotlin.plugin.serialization") }

代码示例

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

kotlin

体验AI代码助手

代码解读

复制代码

interface AuthService { @POST("login/password") suspend fun loginByPassword( @Body params: Map<String, String> ): NetworkResponse<Auth> }

kotlin

体验AI代码助手

代码解读

复制代码

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

体验AI代码助手

代码解读

复制代码

import kotlinx.serialization.Serializable @Serializable data class Auth( val token: String, val refreshToken: String, val expire: Long )

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

原文:https://juejin.cn/post/7584758215701332006

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询