Ruben Quadros
04/29/2024, 4:40 PMSerializer for class 'GetPaginatedResponse' is not found
This is my data class
@Serializable(with = GetPaginatedResponseSerializable::class)
data class GetPaginatedResponse(val isNext: Boolean, val content: T)
More info in 🧵Ruben Quadros
04/29/2024, 4:46 PMclass GetPaginatedResponseSerializable<T>(private val tSerializer: KSerializer<T>) : KSerializer<GetPaginatedResponse<T>> {
private val paginatedResponseSerializer = GetPaginatedResponse.serializer(tSerializer)
override val descriptor: SerialDescriptor
get() = SerialDescriptor("GetPaginatedResponseSerializable", paginatedResponseSerializer.descriptor)
override fun deserialize(decoder: Decoder): GetPaginatedResponse<T> {
val paginatedResponse = decoder.decodeSerializableValue(paginatedResponseSerializer)
val isNext = paginatedResponse.isNext
val content = paginatedResponse.content
return GetPaginatedResponse(
isNext = isNext,
content = content
)
}
override fun serialize(encoder: Encoder, value: GetPaginatedResponse<T>) {
encoder.encodeSerializableValue(paginatedResponseSerializer, GetPaginatedResponse(value.isNext, value.content))
}
}
Adam S
04/29/2024, 5:27 PMAdam S
04/29/2024, 5:30 PMAdam S
04/29/2024, 5:31 PMcontent
property be? Primitives, or objects, or lists? Are the possible values ones you have declared yourself, or are they external?Ruben Quadros
04/29/2024, 5:31 PMRuben Quadros
04/30/2024, 5:32 AMAdam S
04/30/2024, 9:48 AMsealed interface
parent for your SomeType, and change GetPaginatedResponse so it's not generic, but instead just uses SomeTypeParent.
@Serializable
data class GetPaginatedResponse(
val isNext: Boolean,
val content: SomeTypeParent,
)
Because SomeParentType is sealed, the possible values are limited, and KxS will be more easily able to encode/decode.Ruben Quadros
04/30/2024, 11:13 AM