Shivam
05/24/2023, 6:45 PMsealed class Parent {
data class Child1(val name: String): Parent()
data class Child2(val name: String): Parent()
}
class ParentSerializer : JsonSerializer<Parent> {
companion object {
const val CLASSNAME = "CLASSNAME"
const val DATA = "DATA"
}
override fun serialize(
src: Parent,
typeOfSrc: Type,
context: JsonSerializationContext
): JsonElement {
val jsonObject = JsonObject()
jsonObject.addProperty(CLASSNAME, src.javaClass.name)
jsonObject.add(DATA, context.serialize(src))
return jsonObject
}
}
val gson = GsonBuilder()
.registerTypeAdapter(Parent::class.java, ParentSerializer())
.create()
gson.toJson(listOf(Parent.Child1("first"), Parent.Child2("second")))
it's not calling the serialize method