Necesito serializar ArrayList como variable de clase de datos con DateSerializer personalizado, con variable de fecha única que uso anotación:
@Serializable data class SearchBundle( @Serializable(with = DateSerializer::class) var startDate: Date? = null)¿Alguien sabe cómo hacerlo para arrayList de fechas?
Probablemente más fácil que su enfoque actual es simplemente especificar el DateSerializer en el nivel de archivo de su SearchBundle a través UseSerializers -annotation , por ejemplo:
@file:UseSerializers(DateSerializer::class) import kotlinx.serialization.* import java.util.* @Serializable data class SearchBundle( var startDate: List<Date>? = null) De esa manera, puede mantener su DateSerializer como está y el resto de su código simplemente funciona, es decir, usará DateSerializer automáticamente para todos los tipos de Date dentro de ese archivo.
@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> } }