UuidSerializer.kt

  1. /*
  2.  * This file is part of the pl.wrzasq.commons.
  3.  *
  4.  * @license http://mit-license.org/ The MIT license
  5.  * @copyright 2022 © by Rafał Wrzeszcz - Wrzasq.pl.
  6.  */

  7. package pl.wrzasq.commons.json.serializer

  8. import kotlinx.serialization.KSerializer
  9. import kotlinx.serialization.descriptors.PrimitiveKind
  10. import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
  11. import kotlinx.serialization.encoding.Decoder
  12. import kotlinx.serialization.encoding.Encoder
  13. import java.util.UUID

  14. /**
  15.  * UUID JSON serialization strategy.
  16.  */
  17. object UuidSerializer : KSerializer<UUID> {
  18.     override val descriptor = PrimitiveSerialDescriptor("UUID", PrimitiveKind.STRING)

  19.     override fun deserialize(decoder: Decoder): UUID = UUID.fromString(decoder.decodeString())

  20.     override fun serialize(encoder: Encoder, value: UUID) {
  21.         encoder.encodeString(value.toString())
  22.     }
  23. }