| // This file was automatically generated from serializers.md by Knit tool. Do not edit. |
| package example.exampleSerializer10 |
| |
| import kotlinx.serialization.* |
| import kotlinx.serialization.json.* |
| import kotlinx.serialization.encoding.* |
| import kotlinx.serialization.descriptors.* |
| |
| import kotlinx.serialization.builtins.IntArraySerializer |
| |
| class ColorIntArraySerializer : KSerializer<Color> { |
| private val delegateSerializer = IntArraySerializer() |
| override val descriptor = SerialDescriptor("Color", delegateSerializer.descriptor) |
| |
| override fun serialize(encoder: Encoder, value: Color) { |
| val data = intArrayOf( |
| (value.rgb shr 16) and 0xFF, |
| (value.rgb shr 8) and 0xFF, |
| value.rgb and 0xFF |
| ) |
| encoder.encodeSerializableValue(delegateSerializer, data) |
| } |
| |
| override fun deserialize(decoder: Decoder): Color { |
| val array = decoder.decodeSerializableValue(delegateSerializer) |
| return Color((array[0] shl 16) or (array[1] shl 8) or array[2]) |
| } |
| } |
| |
| @Serializable(with = ColorIntArraySerializer::class) |
| class Color(val rgb: Int) |
| |
| fun main() { |
| val green = Color(0x00ff00) |
| println(Json.encodeToString(green)) |
| } |