/* Ċ Ġ* ĠCopyright Ġ 2 0 1 7 - 2 0 2 2 ĠA very ĠCar roll Ġand ĠLog an ĠDe ve ck a Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . sand r abot . s andra . utils Ċ Ċ import Ġkotlinx . serialization . Experimental Serialization Api Ċ import Ġkotlinx . serialization . encode ToString Ċ import Ġkotlinx . serialization . json .* Ċ Ċ @ Opt In ( Experimental Serialization Api :: class ) Ċ fun ĠMap < *, Ġ* >. toJson ( json : ĠJson Ġ= ĠJson ) Ġ= Ġjson . encode ToString ( to JsonObject ()) Ċ Ċ fun ĠMap < *, Ġ* >. to JsonObject (): ĠJsonObject Ġ= ĠJsonObject ( map Ġ{ ĊĠĠĠ Ġit . key . toString () Ġto Ġit . value . toJson Element () Ċ }. toMap ()) Ċ Ċ fun ĠAny ?. toJson Element (): ĠJson Element Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠ Ġnull Ġ-> ĠJson Null ĊĠĠĠ Ġis ĠNumber Ġ-> ĠJson Primitive ( this ) ĊĠĠĠ Ġis ĠString Ġ-> ĠJson Primitive ( this ) ĊĠĠĠ Ġis ĠBoolean Ġ-> ĠJson Primitive ( this ) ĊĠĠĠ Ġis ĠMap < *, Ġ*> Ġ-> Ġthis . to JsonObject () ĊĠĠĠ Ġis ĠIterable < *> Ġ-> ĠJson Array ( this . map Ġ{ Ġit . toJson Element () Ġ}) ĊĠĠĠ Ġis ĠArray < *> Ġ-> ĠJson Array ( this . map Ġ{ Ġit . toJson Element () Ġ}) ĊĠĠĠ Ġelse Ġ-> ĠJson Primitive ( this . toString ()) Ġ// ĠOr Ġthrow Ġsome Ġ" unsupported " Ġexception ? Ċ } Ċ Ċ fun ĠJsonObject . obj ( name : ĠString ): ĠJsonObject ? Ġ= Ġget ( name )?. escape Json Null ()?. jsonObject Ċ fun ĠJsonObject . array ( name : ĠString ): ĠJson Array ? Ġ= Ġget ( name )?. escape Json Null ()?. json Array Ċ fun ĠJsonObject . string ( name : ĠString ): ĠString ? Ġ= Ġget ( name )?. escape Json Null ()?. json Primitive ?. content OrNull Ċ Ċ fun ĠJson Element . escape Json Null (): ĠJson Element ? Ġ= Ġif Ġ( this Ġis ĠJson Null ) Ġnull Ġelse Ġthis Ċ