Rodrigo Silva
02/27/2023, 10:02 PM@Serializable
data class Test<T>(
val attr: T
)
Adam S
02/27/2023, 10:07 PMT
manually
https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/serializers.md#plugin-generated-generic-serializer
or define a custom serializer
https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/serializers.md#custom-serializers-for-a-generic-type
or set up contextual serialization
https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/serializers.md#contextual-serialization-and-generic-classesRodrigo Silva
02/28/2023, 12:52 PM@Serializable(with = BoxSerializer::class)
data class Box<T>(
val name: String
val contents: T
)
Im lost here
override fun deserialize(decoder: Decoder) = Box(dataSerializer.deserialize(decoder))
Adam S
02/28/2023, 12:55 PMT
be? Do you have a class for it?Rodrigo Silva
02/28/2023, 1:01 PM@Serializable
data class Command <T> (
@Serializeble(KUUID::class) val id: UUID,
val status: CommandStatusEnum,
val message: T
)
enum class CommandStatusEnum(val value: String) {
Open("Open"),
Closed("Closed"),
Processing("Processing"),
Error("Error")
}
object KUUID : KSerializer<UUID> {
override val descriptor = PrimitiveSerialDescriptor("UUID", PrimitiveKind.STRING)
override fun serialize(encoder: Encoder, value: UUID) = encoder.encodeString(value.toString())
override fun deserialize(decoder: Decoder): UUID = UUID.fromString(decoder.decodeString())
}
the message can be any class, such as pro example, email class
@Serializable
data class EmailModel(
@Serializable(KUUID::class) override val id: UUID,
val active: Boolean,
val address: String,
@Serializable(KUUID::class) val associateFK: UUID
)
Adam S
02/28/2023, 1:05 PM@Serializable
data class Command <T> (
val status: CommandStatusEnum,
val messageType: MessageType,
val message: T
)
Rodrigo Silva
02/28/2023, 1:38 PMoverride fun deserialize(decoder: Decoder) = Box(dataSerializer.deserialize(decoder))
override fun deserialize(decoder: Decoder) = Command((string, enum, dataSerializer.deserialize(decoder))