/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 7 - present ĠRobert ĠJar os Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġio . k vision . remote Ċ Ċ import Ġio . k vision . types . Json BigDecimal Serializer Ċ import Ġio . k vision . types . Json LocalDate Serializer Ċ import Ġio . k vision . types . Json LocalDateTime Serializer Ċ import Ġio . k vision . types . Json Local Time Serializer Ċ import Ġio . k vision . types . Json Offset DateTime Serializer Ċ import Ġio . k vision . types . Json Offset Time Serializer Ċ import Ġio . k vision . types . Json Z onedDateTime Serializer Ċ import Ġkotlinx . serialization . json . Json Ċ import Ġkotlinx . serialization . modules . Serial izers Module Ċ import Ġkotlinx . serialization . modules . overwrite With Ċ import Ġjava . math . BigDecimal Ċ import Ġjava . time . LocalDate Ċ import Ġjava . time . LocalDateTime Ċ import Ġjava . time . Local Time Ċ import Ġjava . time . Offset DateTime Ċ import Ġjava . time . Offset Time Ċ import Ġjava . time . Z onedDateTime Ċ Ċ /** Ċ Ġ* ĠJSON Ġutility Ġfunctions Ċ Ġ*/ Ċ actual Ġobject ĠRemote Serialization Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġkv Serial izers Module Ġ= ĠSerial izers Module Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext ual ( LocalDateTime :: class , ĠJson LocalDateTime Serializer ) ĊĠĠĠĠĠĠĠ Ġcontext ual ( LocalDate :: class , ĠJson LocalDate Serializer ) ĊĠĠĠĠĠĠĠ Ġcontext ual ( Local Time :: class , ĠJson Local Time Serializer ) ĊĠĠĠĠĠĠĠ Ġcontext ual ( Offset DateTime :: class , ĠJson Offset DateTime Serializer ) ĊĠĠĠĠĠĠĠ Ġcontext ual ( Offset Time :: class , ĠJson Offset Time Serializer ) ĊĠĠĠĠĠĠĠ Ġcontext ual ( Z onedDateTime :: class , ĠJson Z onedDateTime Serializer ) ĊĠĠĠĠĠĠĠ Ġcontext ual ( BigDecimal :: class , ĠJson BigDecimal Serializer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDefault ĠJson Ġconfiguration Ġfor Ġthe Ġfull stack Ġinterfaces . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġactual Ġval Ġplain Ġ= ĠJson Ġ{ ĊĠĠĠĠĠĠĠ Ġignore Unknown Keys Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġserializers Module Ġ= Ġkv Serial izers Module ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCustom ĠJSON Ġconfiguration Ġfor Ġthe Ġfull stack Ġinterfaces . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġactual Ġvar Ġcustom Configuration : ĠJson ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturn Ġcustomized ĠJson Ġconfiguration . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġactual Ġfun Ġget Json ( serializers Modules : ĠList < Serial izers Module >? ): ĠJson Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( custom Configuration Ġ== Ġnull Ġ&& Ġserializers Modules Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplain ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson ( from Ġ= Ġ( custom Configuration Ġ?: ĠJson )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġignore Unknown Keys Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġserializers Module Ġ= Ġserializers Module . overwrite With ( Serial izers Module Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . include ( kv Serial izers Module ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġserializers Modules ?. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . include ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ