diff --git a/examples/features/src/main/java/com/github/kagkarlsson/examples/kotlin/KotlinSerializer.kt b/examples/features/src/main/java/com/github/kagkarlsson/examples/kotlin/KotlinSerializer.kt index f2b408ee..2c2f7584 100644 --- a/examples/features/src/main/java/com/github/kagkarlsson/examples/kotlin/KotlinSerializer.kt +++ b/examples/features/src/main/java/com/github/kagkarlsson/examples/kotlin/KotlinSerializer.kt @@ -10,11 +10,23 @@ class KotlinSerializer : Serializer { val CHARSET = StandardCharsets.UTF_8 override fun serialize(data: Any): ByteArray { + if (data == null) { + return ByteArray(0) + } val serializer = serializer(data.javaClass) return Json.encodeToString(serializer, data).toByteArray(CHARSET); } override fun deserialize(clazz: Class, serializedData: ByteArray): T { + if (serializedData == null || clazz == Void::class.java) { + return null + } + + // If we do not know the class (e.g. java.lang.Object), decode as generic JSON + if (clazz == Any::class.java) { + return Json.decodeFromString(JsonElement.serializer(), serializedData.decodeToString()) as T + } + // Hackish workaround? // https://github.com/Kotlin/kotlinx.serialization/issues/1134 // https://stackoverflow.com/questions/64284767/replace-jackson-with-kotlinx-serialization-in-javalin-framework/64285478#64285478