xref: /aosp_15_r20/external/kotlinx.serialization/guide/example/example-serializer-10.kt (revision 57b5a4a64c534cf7f27ac9427ceab07f3d8ed3d8)
1 // This file was automatically generated from serializers.md by Knit tool. Do not edit.
2 package example.exampleSerializer10
3 
4 import kotlinx.serialization.*
5 import kotlinx.serialization.json.*
6 import kotlinx.serialization.encoding.*
7 import kotlinx.serialization.descriptors.*
8 
9 import kotlinx.serialization.builtins.IntArraySerializer
10 
11 class ColorIntArraySerializer : KSerializer<Color> {
12     private val delegateSerializer = IntArraySerializer()
13     override val descriptor = SerialDescriptor("Color", delegateSerializer.descriptor)
14 
serializenull15     override fun serialize(encoder: Encoder, value: Color) {
16         val data = intArrayOf(
17             (value.rgb shr 16) and 0xFF,
18             (value.rgb shr 8) and 0xFF,
19             value.rgb and 0xFF
20         )
21         encoder.encodeSerializableValue(delegateSerializer, data)
22     }
23 
deserializenull24     override fun deserialize(decoder: Decoder): Color {
25         val array = decoder.decodeSerializableValue(delegateSerializer)
26         return Color((array[0] shl 16) or (array[1] shl 8) or array[2])
27     }
28 }
29 
30 @Serializable(with = ColorIntArraySerializer::class)
31 class Color(val rgb: Int)
32 
mainnull33 fun main() {
34     val green = Color(0x00ff00)
35     println(Json.encodeToString(green))
36 }
37