package Ġorg . from source . ki wi . json Ċ Ċ sealed Ġclass ĠJson Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġparse ( json : ĠString ): ĠJson Ġ= ĠJson Parser (). parse ( json ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠJsonObject ( private Ġval Ġvalue : ĠMap < String , ĠJson > Ġ= Ġmap Of ()) Ġ: ĠJson () Ġ{ ĊĠĠĠ Ġoperator Ġfun Ġplus ( jsonObject : ĠJsonObject ) Ġ= ĠJsonObject ( value Ġ+ ĠjsonObject . value ) ĊĊĠĠĠ Ġfun Ġset ( key : ĠString , Ġjson : ĠJson ) Ġ= ĠJsonObject ( value Ġ+ ĠPair ( key , Ġjson )) ĊĊĠĠĠ Ġfun Ġvalues (): ĠList < Json > Ġ= Ġvalue . values . toList () ĊĊĠĠĠ Ġfun Ġvalue ( key : ĠString ): ĠJson ? Ġ= Ġvalue [ key ] ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . entries . join ToString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġseparator Ġ= Ġ", Ġ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprefix Ġ= Ġ"{ ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpostfix Ġ= Ġ" }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransform Ġ= Ġ{ Ġ""" "${ it . key } ": Ġ${ it . value } """ Ġ}) Ċ } Ċ Ċ data Ġclass ĠJson Array ( private Ġval Ġvalue : ĠList < Json > Ġ= Ġarray ListOf ()) Ġ: ĠJson () Ġ{ ĊĠĠĠ Ġoperator Ġfun Ġplus ( json : ĠJson ) Ġ= ĠJson Array ( value Ġ+ Ġjson ) ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġvalue . toString () ĊĊĠĠĠ Ġfun Ġvalues (): ĠList < Json > Ġ= Ġvalue ĊĊĠĠĠ Ġfun Ġsize (): ĠInt Ġ= Ġvalue . size Ċ } Ċ Ċ data Ġclass ĠJson String ( val Ġvalue : ĠString ) Ġ: ĠJson () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġ""" "$ value """" Ċ } Ċ Ċ data Ġclass ĠJson Number ( val Ġvalue : ĠNumber ) Ġ: ĠJson () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġvalue . toString () Ċ } Ċ Ċ data Ġclass ĠJson Boolean ( val Ġvalue : ĠBoolean ) Ġ: ĠJson () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġvalue . toString () Ċ } Ċ Ċ object ĠJson Null Ġ: ĠJson () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġ" null " Ċ }