You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Kotlin Retrofit2无法解析接口数据:转换器创建失败

问题分析与解决方案

崩溃的核心原因有两个:

  1. 接口返回的JSON结构不是直接的商品数组,而是包含products数组、total、skip、limit的顶层对象,直接用List<Products>接收结构不匹配
  2. 使用kotlinx.serialization作为Retrofit转换器时,数据类缺少序列化注解,导致转换器无法解析数据

修复步骤:

1. 给Products数据类添加序列化注解

导入kotlinx.serialization.Serializable并标记数据类:

import kotlinx.serialization.Serializable

@Serializable
data class Products(
    val id: Int,
    val title: String,
    val description: String,
    val price: Double,
    val discountPercentage: Double,
    val rating: Double,
    val stock: Int,
    val brand: String,
    val category: String,
    val thumbnail: String,
    val images: List<String>
)

2. 创建顶层响应数据类匹配接口返回结构

新建ProductsResponse类包裹完整的JSON响应:

import kotlinx.serialization.Serializable

@Serializable
data class ProductsResponse(
    val products: List<Products>,
    val total: Int,
    val skip: Int,
    val limit: Int
)

3. 修改ApiService的返回类型

将接口方法的返回值改为ProductsResponse:

interface ProductsApiService {
    @GET("/products")
    suspend fun getProductsList(): ProductsResponse
}

4. 确认依赖与插件配置(若有遗漏)

  • 项目根目录build.gradle中添加序列化插件:
    plugins {
        id("com.android.application") version "..." apply false
        id("org.jetbrains.kotlin.android") version "..." apply false
        id("org.jetbrains.kotlin.plugin.serialization") version "..." apply false
    }
    
  • 模块build.gradle中应用插件并添加依赖:
    plugins {
        id("com.android.application")
        id("org.jetbrains.kotlin.android")
        id("org.jetbrains.kotlin.plugin.serialization")
    }
    
    dependencies {
        implementation("com.squareup.retrofit2:retrofit:2.9.0")
        implementation("com.jakewharton.retrofit2:converter-kotlinx-serialization:2.9.0")
        implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.1")
    }
    

修改完成后,调用接口时可通过response.products获取商品列表。

内容的提问来源于stack exchange,提问作者Ayzat Rizatdinov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 04:36:34