Are there standard serializers for java.time types i.e LocalTime, LocalDate, Instant, etc..? Does such a thing exist. The idea being that they can be imported into a project so that Kotlinx serialization can serialize java.time types automatically?
e
ephemient
08/11/2021, 1:45 AM
kotlinx.serialization is multiplatform and java.time is JVM-only, so it doesn't come built-in
ephemient
08/11/2021, 1:48 AM
it's not completely obvious what format to choose for them, either - ISO-8601 strings may make sense for most JSON APIs, but maybe millis as Long for protobuf
👍🏾 1
ephemient
08/11/2021, 1:52 AM
you can define your own
Copy code
object LocalDateSerializer : KSerializer<LocalDate> {
override val descriptor: SerialDescriptor =
PrimitiveSerialDescriptor("LocalDateSerializer", PrimitiveKind.STRING)
override fun serialize(encoder: Encoder, value: LocalDate) {
encoder.encodeString(DateTimeFormatter.ISO_DATE.format(value))
}
override fun deserialize(decoder: Decoder): LocalDate =
LocalDate.parse(decoder.decodeString())
}