package Ġcom . nat pr y ce . json k Ċ Ċ sealed Ġclass ĠJson Element Ċ Ċ data Ġclass ĠJsonObject ( ĊĠĠĠ Ġval Ġproperties : ĠMap < String , ĠJson Element > Ġ= Ġempty Map () Ċ ) Ġ: ĠJson Element (), ĠMap < String , ĠJson Element > Ġby Ġproperties Ġ{ ĊĠĠĠĠĊĠĠĠ Ġconstructor ( properties : ĠIterable < Pair < String , ĠJson Element >>) Ġ: ĊĠĠĠĠĠĠĠ Ġthis ( linked Map Of < String , Json Element >(). apply Ġ{ Ġput All ( properties ) Ġ}) ĊĠĠĠĠĊĠĠĠ Ġconstructor ( var arg Ġproperties : ĠPair < String , ĠJson Element >) Ġ: ĊĠĠĠĠĠĠĠ Ġthis ( linked Map Of (* properties )) Ċ } Ċ Ċ fun ĠJsonObject . with Property ( another Property : ĠPair < String , ĠJson Element >) Ġ= ĊĠĠĠ Ġcopy ( properties Ġ= Ġthis . properties Ġ+ Ġanother Property ) Ċ Ċ fun ĠJsonObject . with Properties ( var arg Ġmore Properties : ĠPair < String , ĠJson Element >) Ġ= ĊĠĠĠ Ġcopy ( properties Ġ= Ġthis . properties Ġ+ Ġmore Properties ) Ċ Ċ fun ĠJsonObject . remove Property ( key : ĠString ) Ġ= ĊĠĠĠ Ġcopy ( properties Ġ= Ġthis . properties Ġ- Ġkey ) ĊĊ Ċ data Ġclass ĠJson Array ( ĊĠĠĠ Ġval Ġelements : ĠList < Json Element > Ċ ) Ġ: ĠJson Element (), ĠList < Json Element > Ġby Ġelements Ġ{ ĊĠĠĠ Ġconstructor ( var arg Ġelements : ĠJson Element ) Ġ: Ġthis ( listOf (* elements )) Ċ } Ċ Ċ fun ĠJson Array . append ( another Element : ĠJson Element ) Ġ= ĊĠĠĠ Ġcopy ( elements Ġ= Ġelements Ġ+ Ġanother Element ) Ċ Ċ fun ĠJson Array . append All ( more Elements : ĠIterable < Json Element >) Ġ= ĊĠĠĠ Ġcopy ( elements Ġ= Ġelements Ġ+ Ġmore Elements ) Ċ Ċ fun ĠJson Array . append All ( var arg Ġmore Elements : ĠJson Element ) Ġ= ĊĠĠĠ Ġcopy ( elements Ġ= Ġelements Ġ+ Ġmore Elements ) Ċ Ċ fun ĠJson Array . remove ( i : ĠInt ) Ġ= ĊĠĠĠ Ġcopy ( elements Ġ= Ġelements . to Mutable List (). also Ġ{ Ġit . remove At ( i ) Ġ}. toList ()) Ċ Ċ fun ĠJson Array . replace ( i : ĠInt , Ġnew Element : ĠJson Element ) Ġ= ĊĠĠĠ Ġcopy ( elements Ġ= Ġelements . to Mutable List (). also Ġ{ Ġit [ i ] Ġ= Ġnew Element Ġ}. toList ()) Ċ Ċ data Ġclass ĠJson Number ( val Ġvalue AsString : ĠString ) Ġ: ĠJson Element () Ġ{ ĊĠĠĠ Ġconstructor ( value : ĠInt ) Ġ: Ġthis ( value . toString ()) ĊĠĠĠ Ġconstructor ( value : ĠLong ) Ġ: Ġthis ( value . toString ()) ĊĠĠĠ Ġconstructor ( value : ĠDouble ) Ġ: Ġthis ( value . toString ()) ĊĠĠĠĠ Ċ } Ċ Ċ fun ĠJson Number . toDouble () Ġ= Ġvalue AsString . toDouble () Ċ fun ĠJson Number . to Long () Ġ= Ġvalue AsString . to Long () Ċ fun ĠJson Number . toInt () Ġ= Ġvalue AsString . toInt () Ċ Ċ data Ġclass ĠJson String ( val Ġvalue : ĠString ) Ġ: ĠJson Element () Ċ Ċ data Ġclass ĠJson Boolean ( val Ġvalue : ĠBoolean ) Ġ: ĠJson Element () Ċ Ċ object ĠJson Null Ġ: ĠJson Element () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= Ġ" Json Null " Ċ } Ċ