I have an interesting I guess you can call it bug....
# serialization
f
I have an interesting I guess you can call it bug. I have a Serializer
Copy code
class ValueSerializer <T> (private val dataSerializer: KSerializer<T>) : KSerializer<Value<T>> {
    override val descriptor: SerialDescriptor = dataSerializer.descriptor

    override fun serialize(encoder: Encoder, value: Value<T>) {
        if (value.isSet) {
            if (value.value == null) {
                encoder.encodeNull()
            } else {
                dataSerializer.serialize(encoder, value.value!!)
            }
        }
    }
    override fun deserialize(decoder: Decoder) = TODO("Not implemented!")
}
that produces invalid JSON like this:
{"value1":"Hello World","value2":,"value3":null}
(see
value2
node) But when I have a custom class serializer like this
Copy code
class ValueClassSerializer <T : Any> (private val dataSerializer: KSerializer<T>) : JsonTransformingSerializer<T>(dataSerializer) {
    override fun transformSerialize(element: JsonElement): JsonElement =
        element.jsonObject
}
and call
println(Json.encodeToString(ValueClassSerializer(TestClass.serializer()), testObject))
the output removes correctly the
value2
node