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