package Ġcom . lf . esh aring . utils čĊč Ċ import Ġcom . lf . esh aring . database . user . User Entity č Ċ import Ġcom . squareup . mos hi . Json Adapter č Ċ import Ġcom . squareup . mos hi . M oshi č Ċ import Ġcom . squareup . mos hi . Types č Ċ import Ġcom . squareup . mos hi . kotlin . reflect . Kotlin Json Adapter Factory čĊč Ċ object ĠM oshi Helper Ġ{ čĊčĊĠĠĠ Ġval Ġm oshi Ġ= ĠM oshi . Builder () čĊĠĠĠĠĠĠĠ Ġ. add ( Kotlin Json Adapter Factory ()) čĊĠĠĠĠĠĠĠ Ġ. add ( Date Adapter ()) čĊĠĠĠĠĠĠĠ Ġ. add ( UUID Adapter ()) čĊĠĠĠĠĠĠĠ Ġ. build () čĊčĊĠĠĠ Ġfun Ġ< T > Ġfrom Json ( class Entity : ĠClass < T >, Ġstr : ĠString ): ĠList < T >? Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġtype Ġ= ĠTypes . new Parameterized Type ( List :: class . java , Ġclass Entity ) čĊĠĠĠĠĠĠĠ Ġval Ġadapter : ĠJson Adapter < List < T >> Ġ= Ġm oshi . adapter ( type ) čĊĠĠĠĠĠĠĠ Ġreturn Ġadapter . fromJson ( str )?. toList () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġ< T > ĠtoJson ( class Entity : ĠClass < T >, Ġlist : ĠList < T >? ): ĠString Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġtype Ġ= ĠTypes . new Parameterized Type ( List :: class . java , Ġclass Entity ) čĊĠĠĠĠĠĠĠ Ġval Ġadapter : ĠJson Adapter < List < T >> Ġ= Ġm oshi . adapter ( type ) čĊĠĠĠĠĠĠĠ Ġreturn Ġadapter . toJson ( list ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġ< T > Ġto JsonObject ( class Entity : ĠClass < T >, Ġinstance : ĠT ): ĠString Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġadapter : ĠJson Adapter < T > Ġ= Ġm oshi . adapter ( class Entity ) čĊĠĠĠĠĠĠĠ Ġreturn Ġadapter . toJson ( instance ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġ< T > Ġfrom JsonObject ( class Entity : ĠClass < T >, Ġstr : ĠString ): ĠT ? Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġadapter : ĠJson Adapter < T > Ġ= Ġm oshi . adapter ( class Entity ) čĊĠĠĠĠĠĠĠ Ġreturn Ġadapter . fromJson ( str ) čĊĠĠĠ Ġ} č Ċ }