Hey guys what this error means? `Serializer has n...
# android
v
Hey guys what this error means?
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
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.
v
So how can we do that?
I think I got this solution. Hope this will work.
p
put this :
Copy code
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
👍 1
1192 Views