• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // This file was automatically generated from json.md by Knit tool. Do not edit.
2 package example.exampleJson28
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 
mainnull28 fun 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