kotlinx.serialization
kotlinx.serialization copied to clipboard
Errors in generating an external serializer for a parameterized serializable class
When trying to execute such code
@Serializer(forClass = Data::class)
class MySerializer(val serializer: KSerializer<Any>)
@Serializable(MySerializer::class)
class Data<T: Any>(val t: T)
...
Json.encodeToString(Data(1))
an runtime error occurs
Exception in thread "main" java.lang.NullPointerException: Parameter specified as non-null is null: method kotlinx.serialization.encoding.AbstractEncoder.encodeSerializableElement, parameter serializer
at kotlinx.serialization.encoding.AbstractEncoder.encodeSerializableElement(AbstractEncoder.kt)
at MySerializer.serialize(Main.kt:15)
at MySerializer.serialize(Main.kt:15)
at kotlinx.serialization.json.internal.StreamingJsonEncoder.encodeSerializableValue(StreamingJsonEncoder.kt:228)
at kotlinx.serialization.json.internal.JsonStreamsKt.encodeByWriter(JsonStreams.kt:28)
at kotlinx.serialization.json.Json.encodeToString(Json.kt:81)
at MainKt.main(Main.kt:21)
at MainKt.main(Main.kt)
However, the code works fine if you rename the serializer
property to typeSerial0