package Ġcom . jay ch ang . s ac Ċ Ċ import Ġcom . google . gson .* Ċ import Ġretrofit 2 . Converter Ċ import Ġretrofit 2 . converter . gson . Gson Converter Factory Ċ import Ġjava . lang . reflect . Type Ċ Ċ class ĠGson Parser Ġ: ĠJson Parser Ġ{ ĊĊĠ Ġprivate Ġvar Ġgson Ġ= ĠGson () ĊĊĠ Ġoverride Ġfun Ġconverter Factory (): ĠConverter . Factory Ġ{ ĊĠĠĠ Ġreturn ĠGson Converter Factory . create ( gson ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġ< T > Ġparse ( json : ĠString , ĠtypeOf T : ĠType , Ġkey Path : ĠString ?): ĠT Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( key Path Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġgson . fromJson ( json , ĠtypeOf T ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġcreate Gson ( type Of T , Ġkey Path ). fromJson ( json , ĠtypeOf T ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġupdate ( type : ĠType , Ġkey Path : ĠString ) Ġ{ ĊĠĠĠ Ġgson Ġ= Ġcreate Gson ( type , Ġkey Path ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġcreate Gson ( type : ĠType , Ġkey Path : ĠString ): ĠGson Ġ{ ĊĠĠĠ Ġval Ġde serializer Ġ= ĠKey Path Deserializer ( key Path ) ĊĠĠĠ Ġreturn ĠGson Builder (). register Type Adapter ( type , Ġde serializer ). create () ĊĠ Ġ} ĊĊĠ Ġprivate Ġclass ĠKey Path Deserializer ( private Ġval Ġkey Path : ĠString ) Ġ: ĠJson Deserializer < Any > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġdeserialize ( json : ĠJson Element , ĠtypeOf T : ĠType , Ġcontext : ĠJson Deserialization Context ): ĠAny Ġ{ ĊĠĠĠĠĠ Ġval Ġparts Ġ= Ġkey Path . split (".") ĊĠĠĠĠĠ Ġvar ĠjsonObject Ġ= Ġjson . as JsonObject ĊĠĠĠĠĠ Ġvar Ġjson Element : ĠJson Element Ġ= ĠjsonObject [ parts [ 0 ]] ĊĠĠĠĠĠ Ġfor Ġ( part Ġin Ġparts ) Ġ{ ĊĠĠĠĠĠĠĠ Ġjson Element Ġ= ĠjsonObject [ part ] ĊĠĠĠĠĠĠĠ Ġif Ġ( json Element Ġis ĠJsonObject ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠjsonObject Ġ= Ġjson Element . as JsonObject ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġreturn ĠGson (). fromJson ( json Element , ĠtypeOf T ) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ Ċ }