xref: /aosp_15_r20/external/kotlinx.serialization/guide/example/example-poly-18.kt (revision 57b5a4a64c534cf7f27ac9427ceab07f3d8ed3d8)
1 // This file was automatically generated from polymorphism.md by Knit tool. Do not edit.
2 package example.examplePoly18
3 
4 import kotlinx.serialization.*
5 import kotlinx.serialization.json.*
6 
7 import kotlinx.serialization.modules.*
8 
9 @Serializable
10 abstract class Project {
11     abstract val name: String
12 }
13 
14 @Serializable
15 @SerialName("OwnedProject")
16 data class OwnedProject(override val name: String, val owner: String) : Project()
17 
<lambda>null18 val module = SerializersModule {
19     polymorphic(Project::class) {
20         subclass(OwnedProject::class)
21     }
22 }
23 
<lambda>null24 val format = Json { serializersModule = module }
25 
mainnull26 fun main() {
27     println(format.decodeFromString<Project>("""
28         {"type":"unknown","name":"example"}
29     """))
30 }
31