blob: 83677ebe47c3bb27971eb192f0d47a69c12a707f [file] [log] [blame]
Roman Elizarov5459c102020-08-11 12:27:36 +03001// This file was automatically generated from polymorphism.md by Knit tool. Do not edit.
2package example.examplePoly19
3
4import kotlinx.serialization.*
5import kotlinx.serialization.json.*
6
7import kotlinx.serialization.modules.*
8
9@Serializable
10abstract class Project {
11 abstract val name: String
12}
13
14@Serializable
15data class BasicProject(override val name: String, val type: String): Project()
16
17@Serializable
18@SerialName("OwnedProject")
19data class OwnedProject(override val name: String, val owner: String) : Project()
20
21val module = SerializersModule {
22 polymorphic(Project::class) {
23 subclass(OwnedProject::class)
Joseph Burton45976022021-11-22 15:37:37 +000024 defaultDeserializer { BasicProject.serializer() }
Roman Elizarov5459c102020-08-11 12:27:36 +030025 }
26}
27
28val format = Json { serializersModule = module }
29
30fun main() {
31 println(format.decodeFromString<List<Project>>("""
32 [
33 {"type":"unknown","name":"example"},
34 {"type":"OwnedProject","name":"kotlinx.serialization","owner":"kotlin"}
35 ]
36 """))
37}