xref: /aosp_15_r20/external/kotlinx.serialization/guide/example/example-formats-10.kt (revision 57b5a4a64c534cf7f27ac9427ceab07f3d8ed3d8)
1 // This file was automatically generated from formats.md by Knit tool. Do not edit.
2 package example.exampleFormats10
3 
4 import kotlinx.serialization.*
5 import kotlinx.serialization.descriptors.*
6 import kotlinx.serialization.encoding.*
7 import kotlinx.serialization.modules.*
8 
9 class ListEncoder : AbstractEncoder() {
10     val list = mutableListOf<Any>()
11 
12     override val serializersModule: SerializersModule = EmptySerializersModule()
13 
encodeValuenull14     override fun encodeValue(value: Any) {
15         list.add(value)
16     }
17 }
18 
encodeToListnull19 fun <T> encodeToList(serializer: SerializationStrategy<T>, value: T): List<Any> {
20     val encoder = ListEncoder()
21     encoder.encodeSerializableValue(serializer, value)
22     return encoder.list
23 }
24 
encodeToListnull25 inline fun <reified T> encodeToList(value: T) = encodeToList(serializer(), value)
26 
27 @Serializable
28 data class Project(val name: String, val owner: User, val votes: Int)
29 
30 @Serializable
31 data class User(val name: String)
32 
33 fun main() {
34     val data = Project("kotlinx.serialization",  User("kotlin"), 9000)
35     println(encodeToList(data))
36 }
37