xref: /aosp_15_r20/external/kotlinx.serialization/guide/example/example-json-24.kt (revision 57b5a4a64c534cf7f27ac9427ceab07f3d8ed3d8)
1 // This file was automatically generated from json.md by Knit tool. Do not edit.
2 package example.exampleJson24
3 
4 import kotlinx.serialization.*
5 import kotlinx.serialization.json.*
6 
7 import kotlinx.serialization.builtins.*
8 
9 @Serializable
10 data class Project(
11     val name: String,
12     @Serializable(with = UserListSerializer::class)
13     val users: List<User>
14 )
15 
16 @Serializable
17 data class User(val name: String)
18 
19 object UserListSerializer : JsonTransformingSerializer<List<User>>(ListSerializer(User.serializer())) {
20 
transformSerializenull21     override fun transformSerialize(element: JsonElement): JsonElement {
22         require(element is JsonArray) // this serializer is used only with lists
23         return element.singleOrNull() ?: element
24     }
25 }
26 
mainnull27 fun main() {
28     val data = Project("kotlinx.serialization", listOf(User("kotlin")))
29     println(Json.encodeToString(data))
30 }
31