Goth
05/28/2021, 1:41 AM1. this should deserilize to Message<SimmplePayload>
{
id = "1",
type = "simple",
payload = {
name = "Blah"
}
}
2. this should deserilize to Message<AdvancedPayload>
{
id = "2",
type = "advanced",
payload = {
name = "WOW",
description = "WOW WOW"
}
}
rnett
05/28/2021, 2:03 AMrnett
05/28/2021, 2:04 AMMessage
. You should probably define a data type for deserializing the message using custom serial names, that has methods to transform it into Message
Goth
05/28/2021, 2:07 AMrnett
05/28/2021, 2:11 AM// your Payload classes
sealed class Message<out T: Payload>(val typeName: String){
abstract val id: String
abstract val payload: T
@SerialName("advanced")
data class AdvMessage(override val id: String, override val payload: AdvancedPayload): Message("advanced)
@SerialName("simple")
data class SimpleMessage(override val id: String, override val payload: SimplePayload): Message("simple")
}
rnett
05/28/2021, 2:11 AMrnett
05/28/2021, 2:14 AMrnett
05/28/2021, 2:15 AMdefault{ when(it){
"simple" -> Message.serializer(SimplePayload.serializer())
"advanced" -> Message.serializer(AdvancedPayload.serializer())
else -> error("") // not sure if there's a null serializer but you could use that
} }
rnett
05/28/2021, 2:16 AMDominaezzz
05/28/2021, 11:33 AMDominaezzz
05/28/2021, 11:37 AM