package Ġcom . y oked ox Ċ Ċ import Ġcom . be ust . kl ax on . Kl ax on Ċ Ċ type alias ĠJsonObject Ġ= ĠMap < String , ĠAny ?> Ċ Ċ fun ĠtoJson ( b : ĠBoolean ): ĠJson Value Ġ{ ĊĠĠĠ Ġreturn ĠJson Value ( b ) Ċ } Ċ Ċ fun ĠtoJson ( s : ĠString ): ĠJson Value Ġ{ ĊĠĠĠ Ġreturn ĠJson Value ( s ) Ċ } Ċ Ċ @ Jvm Name (" toJson Iterable JsonValue ") Ċ fun ĠtoJson ( list : ĠIterable < JsonValue >): ĠJson Value Ġ{ ĊĠĠĠ Ġreturn ĠJson Value ( list ) Ċ } Ċ Ċ /* Ċ NOTE Ġon Ġcustom ĠJSON Ġimplementation : Ċ Ċ - ĠK l ax on Ġ( JSON Ġlibrary ) Ġdid Ġnot Ġdo Ġwell Ġwith Ġbuilding Ġup ĠJSON Ġvalue Ġtrees Ġfor Ġoutput . Ċ - ĠG SON Ġ( 2 . 8 . 6 ) Ġfailed Ġto Ġload Ġcustom ĠJ avadoc Ġtype Ġserializers Ġwith Ġthe Ġexception Ġdue Ġto Ġreflection : ĊĊĠĠĠ ĠUnable Ġto Ġmake Ġfield Ġpublic Ġfinal Ġj dk . javadoc . internal . tool . Elements Table ĊĠĠĠĠĠ Ġj dk . javadoc . internal . tool . Doc Env Impl . et able Ġaccessible : ĊĠĠĠĠĠ Ġmodule Ġj dk . javadoc Ġdoes Ġnot Ġ" exports Ġj dk . javadoc . internal . tool " Ġto Ġun named Ġmodule Ġ@ 3 e 8 c 9 9 8 1 ĊĠĠĠĠĠ Ġat Ġjava . base / java . lang . reflect . Accessible Object . check Can Set Accessible ( Accessible Object . java : 3 4 1 ) ĊĠĠĠĠĠ Ġ... ĊĊĠ ĠCould Ġnot Ġfigure Ġout Ġhow Ġto Ġuse Ġ-- add - exports Ġwith ĠKotlin Ġgradle Ġproject Ġfor Ġinternal Ġclasses . ĊĠ ĠConsider ed Ġwrapping Ġevery ĠJ avadoc Ġtype Ġin Ġa Ġwrapper Ġand Ġproviding Ġserializers Ġfor Ġthe Ġwrappers , Ġbut Ġat Ġthat Ġpoint ... Ċ Ġ*/ Ċ Ċ class ĠJson Value Ġ{ ĊĠĠĠ Ġprivate Ġval Ġ_ value : ĠAny ? ĊĊĠĠĠ Ġconstructor ( value : ĠIterable < Any ?> ): Ġthis ( value Ġas ĠAny ?) ĊĊĠĠĠ Ġconstructor ( value : ĠMap < String , ĠAny ?> ): Ġthis ( value Ġas ĠAny ?) ĊĊĠĠĠ Ġconstructor ( value : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis ._ value Ġ= Ġwhen ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠString Ġ-> Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBoolean Ġ-> Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠNumber Ġ-> Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠChar Ġ-> Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠIterable < *> Ġ-> Ġvalue . map Ġ{ ĠJson Value ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMap < *, Ġ*> Ġ-> Ġvalue . map Keys Ġ{ Ġit . key Ġas ĠString Ġ}. map Values Ġ{ ĠJson Value ( it . value ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠJson Value Ġ-> Ġvalue ._ value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠError (" Cannot Ġconvert Ġtype Ġto ĠJson Value : Ġ$ value Ġ( java Class Ġ= Ġ${ value . java Class }) ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġoperator Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( other ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠJson Value Ġ-> Ġ_ value Ġ== Ġother ._ value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ_ value Ġ== Ġother ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoperator Ġfun Ġget ( key : ĠString ): ĠJson Value ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen (_ value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMap < *, Ġ*> Ġ-> Ġ_ value [ key ] Ġas ĠJson Value ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠError (" get () Ġcalled Ġwith Ġstring Ġkey Ġon Ġnon - object Ġtype ! Ġ( value =$_ value )") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoperator Ġfun Ġget ( index : ĠInt ): ĠJson Value ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen (_ value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠIterable < *> Ġ-> Ġ_ value . elementAt ( index ) Ġas ĠJson Value ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠError (" get () Ġcalled Ġwith Ġinteger Ġindex Ġon Ġnon - array Ġtype ! Ġ( value =$_ value )") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġsize : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġwhen (_ value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠIterable < *> Ġ-> Ġ_ value . count () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMap < *, Ġ*> Ġ-> Ġ_ value . size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠError (" ` size ` Ġcalled Ġon ĠJson Value Ġthat Ġis Ġnot Ġan Ġobject Ġor Ġarray Ġ( value =$_ value )") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġval Ġkeys : ĠSet < String > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġwhen (_ value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMap < *, Ġ*> Ġ-> Ġ(_ value Ġas ĠMap < String , ĠJson Value >). keys ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠError (" ` keys ` Ġcalled Ġon ĠJson Value Ġthat Ġis Ġnot Ġan Ġobject Ġ( value =$_ value )") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠtoJson String (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ(_ value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠIterable < *> Ġ-> Ġarray ToString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMap < *, Ġ*> Ġ-> Ġobject ToString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠByte Ġ-> ĠK l ax on (). toJson String (_ value . toInt ()) Ġ// ĠK l ax on Ġwould Ġrender ĠByte Ġas ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠShort Ġ-> ĠK l ax on (). toJson String (_ value . toInt ()) Ġ// ĠK l ax on Ġwould Ġrender ĠShort Ġas ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠChar Ġ-> ĠK l ax on (). toJson String (_ value . toString ()) Ġ// ĠK l ax on Ġwould Ġrender ĠChar Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠK l ax on (). toJson String (_ value ) Ġ// ĠLet ĠK l ax on Ġhandle Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ_ value . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġarray ToString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"[ ${ (_ value Ġas ĠIterable < *> ). join ToString Ġ{ Ġ( it Ġas ĠJson Value ). toJson String () Ġ}} ]" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġprivate Ġfun Ġobject ToString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġserialized Ġ= Ġ(_ value Ġas ĠMap < String , ĠJson Value >). entries . join ToString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ JsonValue ( it . key ). toJson String ()} : Ġ${ it . value . toJson String () }" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ" {$ serialized }" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ_ value ?. hashCode () Ġ?: Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠReturns Ġtrue Ġif Ġthe Ġvalue Ġcan Ġbe Ġdiscarded . ĊĠĠĠ Ġfun Ġis Disposable (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ(_ value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġis ĠString Ġ-> Ġ_ value Ġ== Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġis ĠIterable < *> Ġ-> Ġ_ value . count () Ġ== Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġis ĠMap < *, Ġ*> Ġ-> Ġ_ value . size Ġ== Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠJson Value Ġ-> Ġ_ value . is Disposable () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠReturns Ġa Ġcopy Ġwith Ġdiscarded Ġnull Ġfields . ĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġfun Ġcompact ed (): ĠJson Value Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ(_ value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠIterable < *> Ġ-> ĠJson Value (( _ value Ġas ĠIterable < JsonValue >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . compact ed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMap < *, Ġ*> Ġ-> ĠJson Value (( _ value Ġas ĠMap < String , ĠJson Value >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Values Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . value . compact ed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! it . value . is Disposable () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ