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.exampleSerializer18 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 java.util.Date 10*57b5a4a6SAndroid Build Coastguard Worker import java.text.SimpleDateFormat 11*57b5a4a6SAndroid Build Coastguard Worker 12*57b5a4a6SAndroid Build Coastguard Worker object DateAsLongSerializer : KSerializer<Date> { 13*57b5a4a6SAndroid Build Coastguard Worker override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("DateAsLong", PrimitiveKind.LONG) serializenull14*57b5a4a6SAndroid Build Coastguard Worker override fun serialize(encoder: Encoder, value: Date) = encoder.encodeLong(value.time) 15*57b5a4a6SAndroid Build Coastguard Worker override fun deserialize(decoder: Decoder): Date = Date(decoder.decodeLong()) 16*57b5a4a6SAndroid Build Coastguard Worker } 17*57b5a4a6SAndroid Build Coastguard Worker 18*57b5a4a6SAndroid Build Coastguard Worker object DateAsSimpleTextSerializer: KSerializer<Date> { 19*57b5a4a6SAndroid Build Coastguard Worker override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("DateAsSimpleText", PrimitiveKind.LONG) 20*57b5a4a6SAndroid Build Coastguard Worker private val format = SimpleDateFormat("yyyy-MM-dd") 21*57b5a4a6SAndroid Build Coastguard Worker override fun serialize(encoder: Encoder, value: Date) = encoder.encodeString(format.format(value)) 22*57b5a4a6SAndroid Build Coastguard Worker override fun deserialize(decoder: Decoder): Date = format.parse(decoder.decodeString()) 23*57b5a4a6SAndroid Build Coastguard Worker } 24*57b5a4a6SAndroid Build Coastguard Worker 25*57b5a4a6SAndroid Build Coastguard Worker typealias DateAsLong = @Serializable(DateAsLongSerializer::class) Date 26*57b5a4a6SAndroid Build Coastguard Worker 27*57b5a4a6SAndroid Build Coastguard Worker typealias DateAsText = @Serializable(DateAsSimpleTextSerializer::class) Date 28*57b5a4a6SAndroid Build Coastguard Worker 29*57b5a4a6SAndroid Build Coastguard Worker @Serializable 30*57b5a4a6SAndroid Build Coastguard Worker class ProgrammingLanguage(val stableReleaseDate: DateAsText, val lastReleaseTimestamp: DateAsLong) 31*57b5a4a6SAndroid Build Coastguard Worker mainnull32*57b5a4a6SAndroid Build Coastguard Workerfun main() { 33*57b5a4a6SAndroid Build Coastguard Worker val format = SimpleDateFormat("yyyy-MM-ddX") 34*57b5a4a6SAndroid Build Coastguard Worker val data = ProgrammingLanguage(format.parse("2016-02-15+00"), format.parse("2022-07-07+00")) 35*57b5a4a6SAndroid Build Coastguard Worker println(Json.encodeToString(data)) 36*57b5a4a6SAndroid Build Coastguard Worker } 37