package Ġcom . zero ami . common lib . extension Ċ Ċ import Ġcom . google . gson . Gson Builder Ċ import Ġcom . google . gson . reflect . Type Token Ċ import Ġcom . zero ami . common lib . common . L HashMap Deserializer Double As Int Fix Ċ import Ġcom . zero ami . common lib . common . L Map Deserializer Double As Int Fix Ċ import Ġorg . json . JSONArray Ċ import Ġorg . json . JSONObject Ċ Ċ val ĠG SON Ġby Ġlazy Ġ{ ĊĠĠĠ ĠGson Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. register Type Adapter ( object Ġ: ĠType Token < HashMap < String , ĠAny >>() Ġ{} . type , ĠL HashMap Deserializer Double As Int Fix ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. register Type Adapter ( object Ġ: ĠType Token < Map < String , ĠAny >>() Ġ{} . type , ĠL Map Deserializer Double As Int Fix ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT > Ġjson ToObject ( json : ĠString ): ĠT Ġ{ ĊĠĠĠ Ġreturn ĠG SON . fromJson ( json , Ġobject Ġ: ĠType Token < T >() Ġ{} . type ) Ċ } Ċ Ċ fun Ġobject ToJson ( obj : ĠAny ): ĠString Ġ{ ĊĠĠĠ Ġreturn ĠG SON . toJson ( obj ) Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT > Ġjson Convert ( obj : ĠAny ): ĠT Ġ{ ĊĠĠĠ Ġif Ġ( obj Ġis ĠString Ġ|| Ġobj Ġis ĠJSONObject Ġ|| Ġobj Ġis ĠJSONArray ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġjson ToObject ( obj . toString ()) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġjson ToObject ( object ToJson ( obj )) Ċ } Ċ Ċ @ Suppress (" UN CHECK ED _ CAST ", Ġ" IMP LICIT _ CAST _ TO _ ANY ") Ċ fun Ġ< T > ĠJSONObject . get ( name : ĠString , ĠdefaultValue : ĠT ): ĠT Ġ{ ĊĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( defaultValue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBoolean Ġ-> Ġget Boolean ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDouble Ġ-> Ġget Double ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠInt Ġ-> Ġget Int ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLong Ġ-> Ġget Long ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠString Ġ-> ĠgetString ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠJSONArray Ġ-> Ġget JSONArray ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠJSONObject Ġ-> Ġget JSONObject ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠdefaultValue ĊĠĠĠĠĠĠĠ Ġ} Ġas ĠT ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ ĠdefaultValue ĊĠĠĠ Ġ} Ċ } Ċ Ċ inline Ġfun ĠJSONArray . forEach ( action : Ġ( JSONObject ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġlength ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġaction ( getJSONObject ( i )) ĊĠĠĠ Ġ} Ċ } Ċ Ċ inline Ġfun ĠJSONArray . forEach Indexed ( action : Ġ( index : ĠInt , ĠjsonObject : ĠJSONObject ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġlength ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġaction ( i , Ġget JSONObject ( i )) ĊĠĠĠ Ġ} Ċ }