1 // This file was automatically generated from json.md by Knit tool. Do not edit. 2 package example.exampleJson26 3 4 import kotlinx.serialization.* 5 import kotlinx.serialization.json.* 6 7 import kotlinx.serialization.builtins.* 8 9 @Serializable 10 abstract class Project { 11 abstract val name: String 12 } 13 14 @Serializable 15 data class BasicProject(override val name: String): Project() 16 17 18 @Serializable 19 data class OwnedProject(override val name: String, val owner: String) : Project() 20 21 object ProjectSerializer : JsonContentPolymorphicSerializer<Project>(Project::class) { selectDeserializernull22 override fun selectDeserializer(element: JsonElement) = when { 23 "owner" in element.jsonObject -> OwnedProject.serializer() 24 else -> BasicProject.serializer() 25 } 26 } 27 mainnull28fun main() { 29 val data = listOf( 30 OwnedProject("kotlinx.serialization", "kotlin"), 31 BasicProject("example") 32 ) 33 val string = Json.encodeToString(ListSerializer(ProjectSerializer), data) 34 println(string) 35 println(Json.decodeFromString(ListSerializer(ProjectSerializer), string)) 36 } 37