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

Kotlin序列化找不到UUID类型序列化器,能否用@file:UseSerializers解决?

问题解决方案

你可以使用@file:UseSerializers(UUIDAsStringSerializer::class)实现文件级的序列化器配置,无需为每个UUID属性单独标记@Serializable注解,你当前的报错是几个版本适配和配置遗漏问题,按以下步骤修复即可:

1. 补全编译期OptIn配置

Kotlin 1.5.31对应的kotlinx-serialization版本中,@file:UseSerializers属于实验性API,除了基础的kotlin.RequiresOptIn,还需要额外启用序列化框架的实验特性许可,修改gradle配置如下:

tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
    kotlinOptions {
        freeCompilerArgs += [
            "-Xopt-in=kotlin.RequiresOptIn",
            "-Xopt-in=kotlinx.serialization.ExperimentalSerializationApi"
        ]
    }
}

2. 确认注解作用域覆盖范围

@file:UseSerializers的作用域仅限定于当前注解所在的.kt文件:

  • 如果你的BusinessProcessBase子类和基类在同一个文件,现有配置即可生效
  • 如果子类分散在其他.kt文件,需要在每个用到UUID序列化的文件头部都加相同的@file:UseSerializers注解
  • 如需整个模块全局生效无需重复加注解,可以在模块的resources/META-INF/services/目录下创建名为kotlinx.serialization.KSerializer的文件,写入内容mypack.UUIDAsStringSerializer即可全局注册UUID序列化器

3. 版本适配校验

确认你使用的kotlinx-serialization版本和Kotlin 1.5.31匹配,对应适配的序列化版本为1.3.0 ~ 1.3.3,不要使用1.4及以上的版本,避免版本兼容导致的序列化器找不到问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:45:05