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