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.exampleSerializer11 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 @Serializable 10*57b5a4a6SAndroid Build Coastguard Worker @SerialName("Color") 11*57b5a4a6SAndroid Build Coastguard Worker private class ColorSurrogate(val r: Int, val g: Int, val b: Int) { 12*57b5a4a6SAndroid Build Coastguard Worker init { 13*57b5a4a6SAndroid Build Coastguard Worker require(r in 0..255 && g in 0..255 && b in 0..255) 14*57b5a4a6SAndroid Build Coastguard Worker } 15*57b5a4a6SAndroid Build Coastguard Worker } 16*57b5a4a6SAndroid Build Coastguard Worker 17*57b5a4a6SAndroid Build Coastguard Worker object ColorSerializer : KSerializer<Color> { 18*57b5a4a6SAndroid Build Coastguard Worker override val descriptor: SerialDescriptor = ColorSurrogate.serializer().descriptor 19*57b5a4a6SAndroid Build Coastguard Worker serializenull20*57b5a4a6SAndroid Build Coastguard Worker override fun serialize(encoder: Encoder, value: Color) { 21*57b5a4a6SAndroid Build Coastguard Worker val surrogate = ColorSurrogate((value.rgb shr 16) and 0xff, (value.rgb shr 8) and 0xff, value.rgb and 0xff) 22*57b5a4a6SAndroid Build Coastguard Worker encoder.encodeSerializableValue(ColorSurrogate.serializer(), surrogate) 23*57b5a4a6SAndroid Build Coastguard Worker } 24*57b5a4a6SAndroid Build Coastguard Worker deserializenull25*57b5a4a6SAndroid Build Coastguard Worker override fun deserialize(decoder: Decoder): Color { 26*57b5a4a6SAndroid Build Coastguard Worker val surrogate = decoder.decodeSerializableValue(ColorSurrogate.serializer()) 27*57b5a4a6SAndroid Build Coastguard Worker return Color((surrogate.r shl 16) or (surrogate.g shl 8) or surrogate.b) 28*57b5a4a6SAndroid Build Coastguard Worker } 29*57b5a4a6SAndroid Build Coastguard Worker } 30*57b5a4a6SAndroid Build Coastguard Worker 31*57b5a4a6SAndroid Build Coastguard Worker @Serializable(with = ColorSerializer::class) 32*57b5a4a6SAndroid Build Coastguard Worker class Color(val rgb: Int) 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