package Ġcom . my weather app . common . json Ċ Ċ import Ġandroid . util . Log Ċ import Ġcom . squareup . mos hi . M oshi Ċ import Ġcom . squareup . mos hi . kotlin . reflect . Kotlin Json Adapter Factory Ċ Ċ val Ġm oshi Ġ= ĠM oshi . Builder () ĊĠĠĠĠĠĠĠ Ġ. add ( Kotlin Json Adapter Factory ()) ĊĠĠĠĠĠĠĠ Ġ. build () Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠAny > ĠString . fromJson (): ĠT Ġ{ ĊĠĠĠ Ġval Ġk Class Ġ= ĠT :: class . java ĊĠĠĠ Ġreturn Ġfrom Json OrNull () Ġ?: Ġerror (" can 't Ġparse Ġ'$ this ' Ġfor Ġ$ k Class ") Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠAny > ĠString . fromJson OrNull (): ĠT ? Ġ{ ĊĠĠĠ Ġval Ġk Class Ġ= ĠT :: class . java ĊĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġm oshi . adapter ( k Class ). fromJson ( this ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . e (" M oshi ", Ġ" can 't Ġparse Ġ'$ this ' Ġfor Ġ$ k Class Ġ- Ġ$ e ") ĊĠĠĠĠĠĠĠ Ġnull ĊĠĠĠ Ġ} Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠAny > ĠT . toJson (): ĠString Ġ= Ġm oshi . adapter ( T :: class . java ). toJson ( this )