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

如何为Kotlin项目添加JSON序列化依赖?同步报错求解

Kotlin JSON序列化正确配置方案

针对你的项目配置,以下是修复并正确配置Kotlin序列化的步骤:

1. 项目级 Build.Gradle 修改

在buildscript的dependencies块中添加序列化插件的classpath,版本必须与你当前使用的Kotlin Gradle插件版本完全一致(你的项目中是1.5.21):

buildscript {
    ext {
        compose_version = '1.0.1'
        kotlin_version = '1.5.21' // 统一声明Kotlin版本,方便后续维护
    }
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:7.2.2'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'com.google.dagger:hilt-android-gradle-plugin:2.44'
        // 添加Kotlin序列化插件classpath
        classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version"
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

2. 模块级 Build.Gradle 修改

2.1 添加序列化插件

在plugins块中添加序列化插件:

plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'
    id  'kotlin-kapt'
    id 'dagger.hilt.android.plugin'
    id 'org.jetbrains.kotlin.android.extensions'
    // 添加Kotlin序列化插件
    id 'org.jetbrains.kotlin.plugin.serialization'
}

2.2 添加序列化运行时依赖

在dependencies块中添加Kotlin JSON序列化的runtime依赖,版本需与Kotlin版本兼容(Kotlin 1.5.21对应kotlinx-serialization-json:1.3.2):

dependencies {
    // ... 其他已有依赖保持不变 ...

    // Kotlin JSON序列化依赖
    implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.2"
}

3. 常见错误排查

  • 版本不匹配:这是最常见问题,序列化插件版本必须和kotlin-gradle-plugin版本完全一致,运行时依赖版本也要和Kotlin版本兼容。
  • 插件未正确应用:检查模块级plugins块中是否正确添加了org.jetbrains.kotlin.plugin.serialization,避免拼写错误。
  • 同步问题:修改配置后点击Android Studio的「Sync Project with Gradle Files」按钮,若仍有错误,尝试清理项目(Build -> Clean Project)后重新同步。

代码使用示例

在需要序列化的数据类上添加@Serializable注解:

import kotlinx.serialization.Serializable

@Serializable
data class User(
    val id: Int,
    val name: String,
    val email: String
)

序列化/反序列化示例:

import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json

// 序列化
val user = User(1, "John", "john@example.com")
val jsonString = Json.encodeToString(user)

// 反序列化
val decodedUser = Json.decodeFromString<User>(jsonString)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 07:40:32