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

使用Moshi转换Planetary类为JSON时提示找不到JsonAdapter类

解决Moshi找不到Planetary生成的JsonAdapter问题

出现Failed to find the generated JsonAdapter class for class Planetary错误的核心原因是Moshi未成功生成Planetary类对应的JsonAdapter实现,或项目配置缺失导致无法识别生成的代码。以下是具体解决步骤:

1. 补充Moshi Kotlin注解处理器依赖

@JsonClass(generateAdapter = true)需要借助注解处理器自动生成适配器代码,必须确保项目中添加对应依赖:

Groovy构建脚本(build.gradle)

// 顶部启用kapt插件
apply plugin: 'kotlin-kapt'

dependencies {
    // Moshi核心库
    implementation 'com.squareup.moshi:moshi:1.14.0'
    // Kotlin注解处理器,用于生成JsonAdapter
    kapt 'com.squareup.moshi:moshi-kotlin-codegen:1.14.0'
}

Kotlin DSL构建脚本(build.gradle.kts)

plugins {
    // 启用kapt插件
    id("kotlin-kapt")
}

dependencies {
    implementation("com.squareup.moshi:moshi:1.14.0")
    kapt("com.squareup.moshi:moshi-kotlin-codegen:1.14.0")
}

2. 清理并重新构建项目

注解处理器生成的代码可能存在缓存问题,执行以下操作强制重新生成适配器:

  • 点击IDE菜单栏的Build -> Clean Project
  • 再执行Build -> Rebuild Project

3. 改用Kotlin反射适配器(替代注解生成方案)

如果不想依赖注解处理器生成代码,可改用Moshi的Kotlin反射适配器,无需@JsonClass注解:

第一步:添加反射适配器依赖

// Groovy
implementation 'com.squareup.moshi:moshi-kotlin:1.14.0'

// Kotlin DSL
implementation("com.squareup.moshi:moshi-kotlin:1.14.0")

第二步:修改Moshi初始化代码

val moshi = Moshi.Builder()
    .add(DayAdapter())
    .add(KotlinJsonAdapterFactory()) // 注册Kotlin反射适配器工厂
    .build()
val jsonAdapter = moshi.adapter(Planetary::class.java).lenient()
val planetaryJson = jsonAdapter.toJson(planetary)

第三步:移除Planetary类的注解

删除Planetary类上的@JsonClass(generateAdapter = true)注解即可。


内容的提问来源于stack exchange,提问作者Karim Ata

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 11:09:14