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

如何使用kotlinx serializer序列化LocalDateTime?

解决kotlinx-serialization序列化LocalDateTime的缺失序列化器问题

你遇到的问题是因为kotlinx-datetime提供的LocalDateTime序列化器未被自动注册,需要显式导入并配置,具体解决步骤如下:

1. 确认依赖完整性

除已添加的kotlinx-datetime依赖,确保项目同时包含kotlinx-serialization-core依赖(版本需与datetime兼容,比如0.4.0版本的datetime对应1.6.0及以上的core):

// build.gradle.kts 示例
implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.0")
implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.4.0")

2. 导入序列化器并配置

kotlinx-datetime库已内置LocalDateTimeSerializer,只需通过以下两种方式之一启用:

方式一:直接为属性指定序列化器

在包含LocalDateTime的可序列化数据类中,给对应属性添加注解指定序列化器:

import kotlinx.serialization.Serializable
import kotlinx.datetime.LocalDateTime
import kotlinx.datetime.serializers.LocalDateTimeSerializer

@Serializable
data class Event(
    val id: Int,
    // 显式指定使用LocalDateTimeSerializer
    @Serializable(with = LocalDateTimeSerializer::class)
    val timestamp: LocalDateTime
)

方式二:全局注册序列化器

创建序列化模块并注册LocalDateTime的序列化器,后续所有使用该配置的序列化/反序列化操作都能自动处理LocalDateTime:

import kotlinx.serialization.json.Json
import kotlinx.datetime.LocalDateTime
import kotlinx.datetime.serializers.LocalDateTimeSerializer
import kotlinx.serialization.modules.SerializersModule

// 创建序列化模块,注册LocalDateTime的序列化器
val customSerializersModule = SerializersModule {
    contextual(LocalDateTime::class, LocalDateTimeSerializer)
}

// 使用带自定义模块的Json实例
val json = Json {
    serializersModule = customSerializersModule
}

// 示例序列化操作
val event = Event(1, LocalDateTime.now())
val jsonString = json.encodeToString(event)

内容的提问来源于stack exchange,提问作者Siang Cheng Pang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 23:09:59