@ file : Jvm Name (" M oshi Utils ") Ċ Ċ package Ġcom . aut onomous apps . internal . utils Ċ Ċ import Ġcom . squareup . mos hi . FromJson Ċ import Ġcom . squareup . mos hi . Json Adapter Ċ import Ġcom . squareup . mos hi . M oshi Ċ import Ġcom . squareup . mos hi . ToJson Ċ import Ġcom . squareup . mos hi . Types . new Parameterized Type Ċ import Ġcom . squareup . mos hi . kotlin . reflect . Kotlin Json Adapter Factory Ċ import Ġjava . io . File Ċ Ċ val ĠMO SH I : ĠM oshi Ġby Ġlazy Ġ{ ĊĠ ĠM oshi . Builder () ĊĠĠĠ Ġ. add ( Kotlin Json Adapter Factory ()) ĊĠĠĠ Ġ. add ( Type Adapters ()) ĊĠĠĠ Ġ. build () Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT > Ġget Json Adapter ( with Null s : ĠBoolean Ġ= Ġfalse ): ĠJson Adapter < T > Ġ{ ĊĠ Ġval Ġadapter Ġ= ĠMO SH I . adapter ( T :: class . java ) ĊĠ Ġreturn Ġif Ġ( with Null s ) Ġ{ ĊĠĠĠ Ġadapter . serialize Null s () ĊĠ Ġ} Ġelse Ġ{ ĊĠĠĠ Ġadapter ĊĠ Ġ} Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT > Ġget Json ListAdapter ( with Null s : ĠBoolean Ġ= Ġfalse ): ĠJson Adapter < List < T >> Ġ{ ĊĠ Ġval Ġtype Ġ= Ġnew Parameterized Type ( List :: class . java , ĠT :: class . java ) ĊĠ Ġval Ġadapter Ġ= ĠMO SH I . adapter < List < T >>( type ) ĊĠ Ġreturn Ġif Ġ( with Null s ) Ġ{ ĊĠĠĠ Ġadapter . serialize Null s () ĊĠ Ġ} Ġelse Ġ{ ĊĠĠĠ Ġadapter ĊĠ Ġ} Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT > Ġget Json Set Adapter ( with Null s : ĠBoolean Ġ= Ġfalse ): ĠJson Adapter < Set < T >> Ġ{ ĊĠ Ġval Ġtype Ġ= Ġnew Parameterized Type ( Set :: class . java , ĠT :: class . java ) ĊĠ Ġval Ġadapter Ġ= ĠMO SH I . adapter < Set < T >>( type ) ĊĠ Ġreturn Ġif Ġ( with Null s ) Ġ{ ĊĠĠĠ Ġadapter . serialize Null s () ĊĠ Ġ} Ġelse Ġ{ ĊĠĠĠ Ġadapter ĊĠ Ġ} Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠK , Ġre ified ĠV > Ġget Json Map Adapter ( with Null s : ĠBoolean Ġ= Ġfalse ): ĠJson Adapter < Map < K , ĠV >> Ġ{ ĊĠ Ġval Ġtype Ġ= Ġnew Parameterized Type ( Map :: class . java , ĠK :: class . java , ĠV :: class . java ) ĊĠ Ġval Ġadapter Ġ= ĠMO SH I . adapter < Map < K , ĠV >>( type ) ĊĠ Ġreturn Ġif Ġ( with Null s ) Ġ{ ĊĠĠĠ Ġadapter . serialize Null s () ĊĠ Ġ} Ġelse Ġ{ ĊĠĠĠ Ġadapter ĊĠ Ġ} Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT > ĠString . fromJson (): ĠT Ġ{ ĊĠ Ġreturn Ġget Json Adapter < T >(). fromJson ( this ) !! Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT > ĠT . toJson ( with Null s : ĠBoolean Ġ= Ġfalse ): ĠString Ġ{ ĊĠ Ġreturn Ġget Json Adapter < T >( with Null s ). toJson ( this ) Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT > ĠString . fromJson List ( with Null s : ĠBoolean Ġ= Ġfalse ): ĠList < T > Ġ{ ĊĠ Ġreturn Ġget Json ListAdapter < T >( with Null s ). fromJson ( this ) !! Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT > ĠString . fromJson Set ( with Null s : ĠBoolean Ġ= Ġfalse ): ĠSet < T > Ġ{ ĊĠ Ġreturn Ġget Json Set Adapter < T >( with Null s ). fromJson ( this ) !! Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠK , Ġre ified ĠV > ĠString . fromJson Map List (): ĠMap < K , ĠList < V >> Ġ{ ĊĠ Ġval Ġlist Type Ġ= Ġnew Parameterized Type ( List :: class . java , ĠV :: class . java ) ĊĠ Ġval Ġmap Type Ġ= Ġnew Parameterized Type ( Map :: class . java , ĠK :: class . java , Ġlist Type ) ĊĠ Ġval Ġadapter Ġ= ĠMO SH I . adapter < Map < K , ĠList < V >> >( map Type ) ĊĊĠ Ġreturn Ġadapter . fromJson ( this ) !! Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT > ĠT . to Pretty String ( with Null s : ĠBoolean Ġ= Ġfalse ): ĠString Ġ{ ĊĠ Ġreturn Ġget Json Adapter < T >( with Null s ). indent (" Ġ Ġ"). toJson ( this ) Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠK , Ġre ified ĠV > ĠMap < K , ĠV >. to Pretty String ( with Null s : ĠBoolean Ġ= Ġfalse ): ĠString Ġ{ ĊĠ Ġreturn Ġget Json Map Adapter < K , ĠV >( with Null s ). indent (" Ġ Ġ"). toJson ( this ) Ċ } Ċ Ċ @ Suppress (" unused ", Ġ" Has Platform Type ") Ċ internal Ġclass ĠType Adapters Ġ{ ĊĊĠ Ġ@ ToJson Ġfun Ġfile ToJson ( file : ĠFile ) Ġ= Ġfile . absolute Path ĊĠ Ġ@ FromJson Ġfun Ġfile FromJson ( absolute Path : ĠString ) Ġ= ĠFile ( absolute Path ) Ċ } Ċ