cfleming
02/24/2025, 7:34 AMcfleming
02/24/2025, 8:14 PMJsonTransformingSerializer
for this:
open class NoDefaultDiscriminatorSerializer<T : Any>(base: KSerializer<T>): JsonTransformingSerializer<T>(base) {
override fun transformDeserialize(element: JsonElement): JsonElement {
return if (element.jsonObject["type"] == null) {
JsonObject(element.jsonObject + Pair("type", JsonPrimitive("custom")))
} else element
}
override fun transformSerialize(element: JsonElement): JsonElement {
return if (element.jsonObject["type"]?.jsonPrimitive?.content == "custom") {
JsonObject(element.jsonObject.filterKeys { it != "type" })
} else element
}
}