Shivam
sealed 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")))
A modern programming language that makes developers happier.