package Ġde . r ki . cor on aw arn app . util . serialization Ċ Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . Type Adapter Ċ import Ġcom . google . gson . reflect . Type Token Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . io . File Ċ import Ġjava . io . Reader Ċ import Ġkotlin . reflect . K Class Ċ Ċ inline Ġfun Ġ< re ified ĠT > ĠGson . fromJson ( json : ĠString ): ĠT Ġ= Ġfrom Json ( ĊĠĠĠ Ġjson , ĊĠĠĠ Ġobject Ġ: ĠType Token < T >() Ġ{} . type Ċ ) Ċ Ċ inline Ġfun Ġ< re ified ĠT > ĠGson . fromJson ( reader : ĠReader ): ĠT Ġ= Ġfrom Json ( ĊĠĠĠ Ġreader , ĊĠĠĠ Ġobject Ġ: ĠType Token < T >() Ġ{} . type Ċ ) Ċ Ċ /** Ċ Ġ* ĠReturns Ġnull Ġif Ġthe Ġfile Ġdoesn 't Ġexist , Ġotherwise Ġreturns Ġthe Ġparsed Ġobject . Ċ Ġ* ĠThrows Ġan Ġexception Ġif Ġthe Ġobject Ġcan 't Ġbe Ġparsed . Ċ Ġ* ĠAn Ġempty Ġfile , Ġthat Ġwas Ġdeserialized Ġto Ġa Ġnull Ġvalue Ġis Ġdeleted . Ċ Ġ*/ Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠAny > ĠGson . fromJson ( file : ĠFile ): ĠT ? Ġ{ ĊĠĠĠ Ġif Ġ(! file . exists ()) Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . v (" fromJson (): ĠFile Ġdoesn 't Ġexist Ġ% s ", Ġfile ) ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġfile . buffered Reader (). use Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalue : ĠT ? Ġ= Ġfrom Json ( it , Ġobject Ġ: ĠType Token < T >() Ġ{} . type ) ĊĠĠĠĠĠĠĠ Ġif Ġ( value Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . v (" Json Ġread Ġfrom Ġ% s ", Ġfile ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . w (" Tri ed Ġto Ġparse Ġjson Ġfrom Ġfile Ġthat Ġexists , Ġbut Ġwas Ġempty : Ġ% s ", Ġfile ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( file . delete ()) ĠTim ber . w (" Deleted Ġempty Ġjson Ġfile : Ġ% s ", Ġfile ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT > ĠGson . toJson ( data : ĠT , Ġfile : ĠFile ) Ġ= Ġfile . buffered Writer (). use Ġ{ Ġwriter Ġ-> ĊĠĠĠ ĠtoJson ( data , Ġwriter ) ĊĠĠĠ Ġwriter . flush () Ċ } Ċ Ċ fun Ġ< T Ġ: ĠAny > ĠK Class < T >. getDefault Gson Type Adapter (): ĠType Adapter < T > Ġ= ĠGson (). get Adapter ( this . java ) Ċ