package Ġru . y ole . jk id Ċ Ċ import Ġru . y ole . jk id . de serialization . JK id Exception Ċ import Ġjava . lang . reflect . Type Ċ Ċ fun Ġserializer For Basic Type ( type : ĠType ): ĠValue Serializer < out ĠAny ?> Ġ{ ĊĠĠĠ Ġassert ( type . is Primitive Or String ()) Ġ{ Ġ" Expected Ġprimitive Ġtype Ġor ĠString : Ġ${ type . typeName }" Ġ} ĊĠĠĠ Ġreturn Ġserializer ForType ( type ) !! Ċ } Ċ Ċ fun Ġserializer ForType ( type : ĠType ): ĠValue Serializer < out ĠAny ?> ? Ġ= ĊĠĠĠĠĠĠĠ Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠByte :: class . java , ĠByte :: class . java ObjectType Ġ-> ĠByte Serializer ĊĠĠĠĠĠĠĠĠĠĠĠ ĠShort :: class . java , ĠShort :: class . java ObjectType Ġ-> ĠShort Serializer ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInt :: class . java , ĠInt :: class . java ObjectType Ġ-> ĠInt Serializer ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLong :: class . java , ĠLong :: class . java ObjectType Ġ-> ĠLong Serializer ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFloat :: class . java , ĠFloat :: class . java ObjectType Ġ-> ĠFloat Serializer ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDouble :: class . java , ĠDouble :: class . java ObjectType Ġ-> ĠDouble Serializer ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBoolean :: class . java , ĠBoolean :: class . java ObjectType Ġ-> ĠBoolean Serializer ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString :: class . java Ġ-> ĠString Serializer ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ċ Ċ private Ġfun ĠAny ?. expect Number (): ĠNumber Ġ{ ĊĠĠĠ Ġif Ġ( this Ġ! is ĠNumber ) Ġthrow ĠJ K id Exception (" Expected Ġnumber , Ġwas : Ġ$ this ") ĊĠĠĠ Ġreturn Ġthis Ċ } Ċ Ċ object ĠByte Serializer Ġ: ĠValue Serializer < Byte > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġfrom JsonValue ( json Value : ĠAny ?) Ġ= Ġjson Value . expect Number (). to Byte () ĊĠĠĠ Ġoverride Ġfun Ġto JsonValue ( value : ĠByte ) Ġ= Ġvalue Ċ } Ċ Ċ object ĠShort Serializer Ġ: ĠValue Serializer < Short > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġfrom JsonValue ( json Value : ĠAny ?) Ġ= Ġjson Value . expect Number (). to Short () ĊĠĠĠ Ġoverride Ġfun Ġto JsonValue ( value : ĠShort ) Ġ= Ġvalue Ċ } Ċ Ċ object ĠInt Serializer Ġ: ĠValue Serializer < Int > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġfrom JsonValue ( json Value : ĠAny ?) Ġ= Ġjson Value . expect Number (). toInt () ĊĠĠĠ Ġoverride Ġfun Ġto JsonValue ( value : ĠInt ) Ġ= Ġvalue Ċ } Ċ Ċ object ĠLong Serializer Ġ: ĠValue Serializer < Long > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġfrom JsonValue ( json Value : ĠAny ?) Ġ= Ġjson Value . expect Number (). to Long () ĊĠĠĠ Ġoverride Ġfun Ġto JsonValue ( value : ĠLong ) Ġ= Ġvalue Ċ } Ċ Ċ object ĠFloat Serializer Ġ: ĠValue Serializer < Float > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġfrom JsonValue ( json Value : ĠAny ?) Ġ= Ġjson Value . expect Number (). toFloat () ĊĠĠĠ Ġoverride Ġfun Ġto JsonValue ( value : ĠFloat ) Ġ= Ġvalue Ċ } Ċ Ċ object ĠDouble Serializer Ġ: ĠValue Serializer < Double > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġfrom JsonValue ( json Value : ĠAny ?) Ġ= Ġjson Value . expect Number (). toDouble () ĊĠĠĠ Ġoverride Ġfun Ġto JsonValue ( value : ĠDouble ) Ġ= Ġvalue Ċ } Ċ Ċ object ĠBoolean Serializer Ġ: ĠValue Serializer < Boolean > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġfrom JsonValue ( json Value : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( json Value Ġ! is ĠBoolean ) Ġthrow ĠJ K id Exception (" Expected Ġboolean , Ġwas : Ġ$ json Value ") ĊĠĠĠĠĠĠĠ Ġreturn Ġjson Value ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġto JsonValue ( value : ĠBoolean ) Ġ= Ġvalue Ċ } Ċ Ċ object ĠString Serializer Ġ: ĠValue Serializer < String ?> Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġfrom JsonValue ( json Value : ĠAny ?): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( json Value Ġ! is ĠString ?) Ġthrow ĠJ K id Exception (" Expected Ġstring , Ġwas : Ġ$ json Value ") ĊĠĠĠĠĠĠĠ Ġreturn Ġjson Value ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġto JsonValue ( value : ĠString ?) Ġ= Ġvalue Ċ }