package world.respect.lib.serializers import kotlinx.serialization.DeserializationStrategy import kotlinx.serialization.KSerializer import kotlinx.serialization.json.JsonContentPolymorphicSerializer import kotlinx.serialization.json.JsonElement import kotlinx.serialization.json.JsonPrimitive import kotlin.reflect.KClass /** * Handles polymorphic serialization where a value can be an object or primitive type. */ abstract class StringOrObjectSerializer( baseClass: KClass, private val primitiveSerializer: KSerializer, private val objectSerializer: KSerializer ): JsonContentPolymorphicSerializer(baseClass) { override fun selectDeserializer(element: JsonElement): DeserializationStrategy { return when(element) { is JsonPrimitive -> primitiveSerializer else -> objectSerializer } } }