package Ġorg . http 4 k . format Ċ Ċ import Ġarg o . format . Compact Json Formatter Ċ import Ġarg o . format . Pretty Json Formatter Ċ import Ġarg o . j dom . J dom Parser Ċ import Ġarg o . j dom . JsonNode Ċ import Ġarg o . j dom . JsonNode Factories Ċ import Ġarg o . j dom . JsonNode Factories .` object ` Ċ import Ġarg o . j dom . Json NodeType Ċ import Ġorg . http 4 k . format . Json Type . Object Ċ import Ġjava . math . BigDecimal Ċ import Ġjava . math . BigInteger Ċ Ċ object ĠArg o Ġ: ĠJson < JsonNode > Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠtypeOf ( value : ĠJsonNode ): ĠJson Type Ġ= ĊĠĠĠĠĠĠĠ Ġwhen Ġ( value . type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson NodeType . STRING Ġ-> ĠJson Type . String ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson NodeType . TRUE Ġ-> ĠJson Type . Boolean ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson NodeType . FALSE Ġ-> ĠJson Type . Boolean ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson NodeType . NUMBER Ġ-> ĠJson Type . Number ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson NodeType . ARRAY Ġ-> ĠJson Type . Array ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson NodeType . OBJECT Ġ-> ĠObject ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson NodeType . NULL Ġ-> ĠJson Type . Null ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" Don 't Ġknow Ġhow Ġto Ġtranslate Ġ$ value ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġpretty Ġ= ĠPretty Json Formatter () ĊĠĠĠ Ġprivate Ġval Ġcompact Ġ= ĠComp act Json Formatter () ĊĠĠĠ Ġprivate Ġval Ġj dom Parser Ġ= ĠJ dom Parser () ĊĊĠĠĠ Ġoverride Ġfun ĠString . as JsonObject (): ĠJsonNode Ġ= Ġlet ( j dom Parser :: parse ) ĊĠĠĠ Ġoverride Ġfun ĠString ?. as JsonValue (): ĠJsonNode Ġ= Ġthis ?. let Ġ{ ĠJsonNode Factories . string ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ?: ĠJsonNode Factories . null Node () ĊĊĠĠĠ Ġoverride Ġfun ĠInt ?. as JsonValue (): ĠJsonNode Ġ= Ġthis ?. let Ġ{ ĠJsonNode Factories . number ( it . to Long ()) Ġ} ĊĠĠĠĠĠĠĠ Ġ?: ĠJsonNode Factories . null Node () ĊĊĠĠĠ Ġoverride Ġfun ĠDouble ?. as JsonValue (): ĠJsonNode Ġ= Ġthis ?. let Ġ{ ĠJsonNode Factories . number ( BigDecimal ( it )) Ġ} ĊĠĠĠĠĠĠĠ Ġ?: ĠJsonNode Factories . null Node () ĊĊĠĠĠ Ġoverride Ġfun ĠLong ?. as JsonValue (): ĠJsonNode Ġ= Ġthis ?. let Ġ{ ĠJsonNode Factories . number ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ?: ĠJsonNode Factories . null Node () ĊĊĠĠĠ Ġoverride Ġfun ĠBigDecimal ?. as JsonValue (): ĠJsonNode Ġ= Ġthis ?. let Ġ{ ĠJsonNode Factories . number ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ?: ĠJsonNode Factories . null Node () ĊĊĠĠĠ Ġoverride Ġfun ĠBigInteger ?. as JsonValue (): ĠJsonNode Ġ= Ġthis ?. let Ġ{ ĠJsonNode Factories . number ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ?: ĠJsonNode Factories . null Node () ĊĊĠĠĠ Ġoverride Ġfun ĠBoolean ?. as JsonValue (): ĠJsonNode Ġ= Ġthis ?. let Ġ{ ĠJsonNode Factories . boolean Node ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ?: ĠJsonNode Factories . null Node () ĊĊĠĠĠ Ġoverride Ġfun Ġ< T Ġ: ĠIterable < JsonNode >> ĠT . as JsonArray (): ĠJsonNode Ġ= ĠJsonNode Factories . array ( this ) ĊĠĠĠ Ġoverride Ġfun ĠJsonNode . as Pretty Json String (): ĠString Ġ= Ġpretty . format ( this ) ĊĠĠĠ Ġoverride Ġfun ĠJsonNode . as Compact Json String (): ĠString Ġ= Ġcompact . format ( this ) ĊĠĠĠ Ġoverride Ġfun Ġ< LIST Ġ: ĠIterable < Pair < String , ĠJsonNode >>> ĠLIST . as JsonObject (): ĠJsonNode Ġ= Ġ` object `( map Ġ{ Ġfield ( it . first , Ġit . second ) Ġ}) ĊĠĠĠ Ġoverride Ġfun Ġfields ( node : ĠJsonNode ) Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( type Of ( node ) Ġ!= ĠObject ) Ġempty List () Ġelse Ġnode . field List . map Ġ{ Ġit . name . text Ġto Ġit . value Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġelements ( value : ĠJsonNode ): ĠIterable < JsonNode > Ġ= Ġvalue . elements ĊĠĠĠ Ġoverride Ġfun Ġtext ( value : ĠJsonNode ): ĠString Ġ= Ġvalue . text ĊĠĠĠ Ġoverride Ġfun Ġbool ( value : ĠJsonNode ): ĠBoolean Ġ= Ġvalue . getBoolean Value () ĊĠĠĠ Ġoverride Ġfun Ġinteger ( value : ĠJsonNode ) Ġ= Ġvalue . getNumber Value (). to Long () ĊĠĠĠ Ġoverride Ġfun Ġdecimal ( value : ĠJsonNode ) Ġ= Ġvalue . getNumber Value (). to BigDecimal () ĊĊĠĠĠ Ġoverride Ġfun Ġtext ValueOf ( node : ĠJsonNode , Ġname : ĠString ): ĠString Ġ= Ġwith ( node . getNode ( name )) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson NodeType . STRING Ġ-> Ġtext ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson NodeType . TRUE Ġ-> Ġ" true " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson NodeType . FALSE Ġ-> Ġ" false " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson NodeType . NUMBER Ġ-> Ġtext ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" Don 't Ġknow Ġhow Ġto Ġtranslate Ġ$ node ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfield ( name : ĠString , Ġvalue : ĠJsonNode ) Ġ= ĠJsonNode Factories . field ( name , Ġvalue ) Ċ } Ċ