Serializer has not been found for type 'ZonedDateTime'. To use context serializer as fallback, explicitly annotate type or property with @Contextual
Copy code
@Serializable
@Parcelize
data class NearestResult(
val day: ZonedDateTime,
val event: String
) : Parcelable
l
Landry Norris
07/21/2022, 7:59 PM
All members of a Serializable class must either be Serializable, or you need to provide some sort of serializer. ZonedDateTime doesn’t have a serializer defined.
object KZonedDateTimeSerializer : KSerializer<ZonedDateTime> {
override val descriptor: SerialDescriptor =
PrimitiveSerialDescriptor("ZonedDateTime", PrimitiveKind.STRING)
override fun serialize(encoder: Encoder, value: ZonedDateTime) {
encoder.encodeString(value.toString())
}
override fun deserialize(decoder: Decoder): ZonedDateTime =
ZonedDateTime.parse(decoder.decodeString())
}
and after :
Copy code
@Serializable
@Parcelize
data class NearestResult(
@Serializable(with = KZonedDateTimeSerializer::class) val day: ZonedDateTime,
val event: String
) : Parcelable