package Ġdev . bre lla . kotlin x . serial isation . kv on Ċ Ċ import Ġkotlinx . serialization . Deserialization Strategy Ċ import Ġkotlinx . serialization . K Serializer Ċ import Ġkotlinx . serialization . Serialization Strategy Ċ import Ġkotlinx . serialization . descriptors . Serial Descriptor Ċ import Ġkotlinx . serialization . encoding . Decoder Ċ import Ġkotlinx . serialization . encoding . Encoder Ċ import Ġkotlinx . serialization . json . Json Decoder Ċ import Ġkotlinx . serialization . json . Json Element Ċ import Ġkotlinx . serialization . json . Json Encoder Ċ import Ġkotlinx . serialization . json . Json Transform ing Serializer Ċ Ċ public Ġclass ĠK v on Serial iser < T Ġ: ĠAny >( key Serial iser : ĠK Serializer < T >) Ġ: ĠJson Transform ing Serializer < T >( key Serial iser ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġtransform Serialize ( element : ĠJson Element ): ĠJson Element Ġ= ĊĠĠĠĠĠĠĠ Ġelement . compress Element With Kv on () ĊĊĠĠĠ Ġoverride Ġfun Ġtransform Deserialize ( element : ĠJson Element ): ĠJson Element Ġ= ĊĠĠĠĠĠĠĠ Ġelement . de compress Element With Kv on () Ċ } Ċ Ċ public Ġclass ĠK v on Serial isation Strategy < T >( private Ġval Ġkey Serial iser : ĠSerialization Strategy < T >) Ġ: ĠSerialization Strategy < T > Ġ{ ĊĠĠĠ Ġoverride Ġval Ġdescriptor : ĠSerial Descriptor Ġ= Ġkey Serial iser . descriptor ĊĊĠĠĠ Ġoverride Ġfun Ġserialize ( encoder : ĠEncoder , Ġvalue : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= Ġencoder Ġas ? ĠJson Encoder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalStateException ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" This Ġserializer Ġcan Ġbe Ġused Ġonly Ġwith ĠJson Ġformat ." Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Expected ĠEncoder Ġto Ġbe ĠJson Encoder , Ġgot Ġ${ this :: class }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġvar Ġelement Ġ= Ġoutput . json . encode ToJson Element ( key Serial iser , Ġvalue ) ĊĠĠĠĠĠĠĠ Ġelement Ġ= Ġelement . compress Element With Kv on () ĊĠĠĠĠĠĠĠ Ġoutput . encode Json Element ( element ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ public Ġclass ĠK v on Deserial isation Strategy < T >( private Ġval Ġkey Deserial iser : ĠDeserial ization Strategy < T >) Ġ: ĠDeserial ization Strategy < T > Ġ{ ĊĠĠĠ Ġoverride Ġval Ġdescriptor : ĠSerial Descriptor Ġ= Ġkey Deserial iser . descriptor ĊĊĠĠĠ Ġoverride Ġfun Ġdeserialize ( decoder : ĠDecoder ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġdecoder Ġas ? ĠJson Decoder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalStateException ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" This Ġserializer Ġcan Ġbe Ġused Ġonly Ġwith ĠJson Ġformat ." Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Expected ĠEncoder Ġto Ġbe ĠJson Encoder , Ġgot Ġ${ this :: class }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġinput . decode Json Element () ĊĠĠĠĠĠĠĠ Ġreturn Ġinput . json . decode FromJson Element ( key Deserial iser , Ġelement . de compress Element With Kv on ()) ĊĠĠĠ Ġ} Ċ }