Android kotlinx.serialization-序列化ArrayList<;日期>;作为具有自定义DateSerializer的数据类变量

Android kotlinx.serialization-序列化ArrayList<;日期>;作为具有自定义DateSerializer的数据类变量,android,serialization,kotlin,kotlinx.serialization,Android,Serialization,Kotlin,Kotlinx.serialization,我需要使用自定义DateSerializer将ArrayList序列化为数据类变量, 对于单个日期变量,我使用注释: @Serializable data class SearchBundle( @Serializable(with = DateSerializer::class) var startDate: Date? = null) 有人知道如何处理日期列表吗?@Serializable @Serializable class TestDates( @Op

我需要使用自定义DateSerializer将ArrayList序列化为数据类变量, 对于单个日期变量,我使用注释:

@Serializable
      data class SearchBundle(
      @Serializable(with = DateSerializer::class) var startDate: Date? = null)
有人知道如何处理日期列表吗?

@Serializable
@Serializable
class TestDates(
    @Optional @Serializable(with = DatesArraySerializer::class) var dates: ArrayList<Date>? = null
)

object DatesArraySerializer : KSerializer<ArrayList<Date>> {

    override val descriptor = ArrayClassDesc(DateSerializer.descriptor)

    override fun serialize(encoder: Encoder, obj: ArrayList<Date>) {
        encoder.encodeSerializableValue(ArrayListSerializer(DateSerializer), obj)
    }

    override fun deserialize(decoder: Decoder): ArrayList<Date> {
        val dates = decoder.decodeSerializableValue(ArrayListSerializer(DateSerializer))

        return dates.toList() as ArrayList<Date>
    }
}
类测试日期( @可选@Serializable(with=DatesArraySerializer::class)变量日期:ArrayList?=null ) 对象日期数组序列化程序:KSerializer{ override val descriptor=ArrayClassDesc(DateSerializer.descriptor) 重写有趣的序列化(编码器:编码器,obj:ArrayList){ encoder.encodeSerializableValue(ArrayListSerializer(DateSerializer),obj) } 重写有趣的反序列化(解码器:解码器):ArrayList{ val dates=decoder.decodeSerializableValue(ArrayListSerializer(DateSerializer)) 返回日期。toList()作为ArrayList } }
可能比您当前的方法更简单,只需在
SearchBundle
-类的文件级别上指定
日期序列化程序,例如:

@文件:UseSerializer(DateSerializer::class)
导入kotlinx.serialization*
导入java.util*
@可序列化
数据类搜索包(
var startDate:列表?=null)

这样你就可以保持你的
DateSerializer
原样,剩下的代码就可以正常工作了,也就是说,它会自动为该文件中的所有
DateSerializer
类型使用
DateSerializer

一个有趣的解决方案,我不知道你可以在文件级别分配一个序列化程序,我会尝试,谢谢。
@file:UseSerializers(DateSerializer::class)

import kotlinx.serialization.*
import java.util.*

@Serializable
data class SearchBundle(
        var startDate: List<Date>? = null)