package Ġcom . nat pr y ce . sn od ge . json Ċ Ċ import Ġcom . nat pr y ce . json k . JsonArray Ċ import Ġcom . nat pr y ce . json k . Json Boolean Ċ import Ġcom . nat pr y ce . json k . Json Element Ċ import Ġcom . nat pr y ce . json k . Json Null Ċ import Ġcom . nat pr y ce . json k . Json Number Ċ import Ġcom . nat pr y ce . json k . JsonObject Ċ import Ġcom . nat pr y ce . json k . Json String Ċ import Ġcom . nat pr y ce . json k . append Ċ import Ġcom . nat pr y ce . json k . remove Ċ import Ġcom . nat pr y ce . json k . remove Property Ċ import Ġcom . nat pr y ce . json k . replace Ċ import Ġcom . nat pr y ce . json k . with Property Ċ import Ġcom . nat pr y ce . sn od ge . Mut agen Ċ import Ġcom . nat pr y ce . sn od ge . combine Ċ import Ġcom . nat pr y ce . sn od ge . filtered Ċ import Ġcom . nat pr y ce . sn od ge . plus Ċ import Ġcom . nat pr y ce . sn od ge . reflect . tro uble some Classes ĊĊ Ċ fun Ġadd Array Element ( new Element : ĠJson Element ) Ġ= ĠJson Mut agen Ġ{ Ġ_, Ġelement To Mutate : ĠJson Array Ġ-> ĊĠĠĠ Ġsequence Of ( lazy Ġ{ Ġelement To Mutate . append ( new Element ) Ġ}) Ċ } Ċ Ċ fun Ġadd ObjectProperty ( new Element : ĠJson Element ) Ġ= ĠJson Mut agen Ġ{ Ġ_, Ġelement To Mutate : ĠJsonObject Ġ-> ĊĠĠĠ Ġsequence Of ( lazy Ġ{ ĊĠĠĠĠĠĠĠ Ġelement To Mutate . with Property (( element To Mutate . new Property (" x ") Ġto Ġnew Element )) ĊĠĠĠ Ġ}) Ċ } Ċ Ċ private Ġfun ĠJsonObject . new Property ( basename : ĠString ) Ġ= ĊĠĠĠ Ġ( sequence Of ( basename ) Ġ+ Ġgenerate Sequence ( 1 , Ġ{ Ġit Ġ+ Ġ 1 Ġ}). map Ġ{ Ġi Ġ-> Ġ"${ basename }_ $ i " Ġ}) ĊĠĠĠĠĠĠĠ Ġ. filter Not Ġ{ Ġit Ġin Ġthis Ġ} ĊĠĠĠĠĠĠĠ Ġ. first () Ċ Ċ fun Ġremove JsonObject Property () Ġ= ĠJson Mut agen Ġ{ Ġ_, Ġelement To Mutate : ĠJsonObject Ġ-> ĊĠĠĠ Ġelement To Mutate . keys . as Sequence (). map Ġ{ Ġkey Ġ-> ĊĠĠĠĠĠĠĠ Ġlazy Ġ{ Ġelement To Mutate . remove Property ( key ) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġremove JsonArray Element () Ġ= ĠJson Mut agen Ġ{ Ġ_, Ġelement To Mutate : ĠJson Array Ġ-> ĊĠĠĠ Ġelement To Mutate . indices . as Sequence (). map Ġ{ Ġi Ġ-> ĊĠĠĠĠĠĠĠ Ġlazy Ġ{ Ġelement To Mutate . remove ( i ) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġremove Json Element () Ġ= ĊĠĠĠ Ġremove JsonObject Property () Ġ+ Ġremove JsonArray Element () Ċ Ċ fun Ġreplace JsonObject Property ( replacement : ĠJson Element ) Ġ= ĠJson Mut agen Ġ{ Ġ_, Ġelement To Mutate : ĠJsonObject Ġ-> ĊĠĠĠ Ġelement To Mutate . keys . as Sequence (). map Ġ{ Ġkey Ġ-> ĊĠĠĠĠĠĠĠ Ġlazy Ġ{ Ġelement To Mutate . with Property ( key Ġto Ġreplacement ) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġreplace JsonArray Element ( replacement : ĠJson Element ) Ġ= ĠJson Mut agen Ġ{ Ġ_, Ġelement To Mutate : ĠJson Array Ġ-> ĊĠĠĠ Ġelement To Mutate . indices . as Sequence (). map Ġ{ Ġi Ġ-> ĊĠĠĠĠĠĠĠ Ġlazy Ġ{ Ġelement To Mutate . replace ( i , Ġreplacement ) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġreplace Json Element ( replacement : ĠJson Element ) Ġ= ĊĠĠĠ Ġreplace JsonObject Property ( replacement ) Ġ+ Ġreplace JsonArray Element ( replacement ) Ċ Ċ fun Ġreorder Object Properties () Ġ= ĠJson Mut agen Ġ{ Ġrandom , Ġelement To Mutate : ĠJsonObject Ġ-> ĊĠĠĠ Ġsequence Of ( lazy Ġ{ ĊĠĠĠĠĠĠĠ ĠJsonObject ( element To Mutate . properties . toList (). sh uffled ( random )) ĊĠĠĠ Ġ}) Ċ } ĊĊ Ċ fun Ġreflection Mut agens (): ĠMut agen < Json Element > Ġ= ĊĠĠĠ Ġtrouble some Classes () ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġreplace Json Element ( Json String ( it )). filtered Ġ{ Ġit Ġis ĠJson String Ġ} Ġ} ĊĠĠĠĠĠĠĠ Ġ. let Ġ{ Ġcombine ( it ) Ġ} ĊĊ Ċ private Ġval Ġexample Elements Ġ= ĠlistOf ( ĊĠĠĠ ĠJson Null , ĊĠĠĠ ĠJson Boolean ( true ), ĊĠĠĠ ĠJson Boolean ( false ), ĊĠĠĠ ĠJson Number ( 9 9 ), ĊĠĠĠ ĠJson Number (- 9 9 ), ĊĠĠĠ ĠJson Number ( 0 . 0 ), ĊĠĠĠ ĠJson Number ( 1 . 0 ), ĊĠĠĠ ĠJson Number (- 1 . 0 ), ĊĠĠĠ ĠJson String (" a Ġstring "), ĊĠĠĠ ĠJson Array (), ĊĠĠĠ ĠJsonObject ()) ĊĊ Ċ /** Ċ Ġ* Ġ@ return ĠApplies Ġa Ġdefault Ġset Ġof ĠJSON Ġmutations Ċ Ġ*/ Ċ fun Ġdefault Json Mut agens () Ġ= ĊĠĠĠ Ġcombine ( ĊĠĠĠĠĠĠĠ Ġcombine ( example Elements . map Ġ{ Ġexample Element Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcombine ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplace Json Element ( example Element ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Array Element ( example Element ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ObjectProperty ( example Element ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}), ĊĠĠĠĠĠĠĠ Ġremove Json Element (), ĊĠĠĠĠĠĠĠ Ġreorder Object Properties (), ĊĠĠĠĠĠĠĠ Ġreflection Mut agens ()) ĊĊ Ċ @ Deprecated ( ĊĠĠĠ Ġmessage =" re named Ġto Ġdefault Json Mut agens ", ĊĠĠĠ Ġreplace With Ġ= ĠReplace With (" default Json Mut agens ()", Ġ" default Json Mut agens ")) Ċ fun Ġall Json Mut agens () Ġ= Ġdefault Json Mut agens () Ċ