package Ġcom . ta z . custom application Ċ Ċ import Ġcom . google . gson .* Ċ import Ġjava . lang . reflect . Type Ċ Ċ class ĠInterface Adapter < T > Ġ: ĠJsonSerializer < Any ? >, ĊĠĠĠ ĠJson Deserializer < Any ?> Ġ{ ĊĠĠĠ Ġ@ Throws ( Json ParseException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġdeserialize ( ĊĠĠĠĠĠĠĠ Ġjson Element : ĠJson Element , Ġtype : ĠType , ĊĠĠĠĠĠĠĠ Ġjson Deserialization Context : ĠJson Deserialization Context ĊĠĠĠ Ġ): ĠT ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠjsonObject Ġ= Ġjson Element . as JsonObject ĊĠĠĠĠĠĠĠ Ġval Ġprim Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠjsonObject [ CLASS NAME ] Ġas ĠJson Primitive ĊĠĠĠĠĠĠĠ Ġval ĠclassName Ġ= Ġprim . asString ĊĠĠĠĠĠĠĠ Ġval Ġklass Ġ= ĠgetObject Class ( className ) ĊĠĠĠĠĠĠĠ Ġreturn Ġjson Deserialization Context . deserialize ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠjsonObject [ DATA ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġklass ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġserialize ( ĊĠĠĠĠĠĠĠ Ġjson Element : ĠAny ?, ĊĠĠĠĠĠĠĠ Ġtype : ĠType , ĊĠĠĠĠĠĠĠ Ġjson Serialization Context : ĠJson Serialization Context ĊĠĠĠ Ġ): ĠJson Element Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠjsonObject Ġ= ĠJsonObject () ĊĠĠĠĠĠĠĠ ĠjsonObject . addProperty ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCLASS NAME , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjson Element !!. java Class . name ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠjsonObject . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDATA , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjson Serialization Context . serialize ( json Element ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn ĠjsonObject ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetObject Class ( className : ĠString ?): ĠClass < *> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠClass . forName ( className !! ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠClass NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠJson ParseException ( e . message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠCLASS NAME Ġ= Ġ" CLASS NAME " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDATA Ġ= Ġ" DATA " ĊĠĠĠ Ġ} Ċ }