/** Ċ Ġ* Ġ" Common s ĠClause " ĠLicense ĠCondition Ġv 1 . 0 Ċ Ġ* Ċ Ġ* ĠThe ĠSoftware Ġis Ġprovided Ġto Ġyou Ġby Ġthe ĠLic ensor Ġunder Ġthe ĠLicense , Ġas Ġdefined Ċ Ġ* Ġbelow , Ġsubject Ġto Ġthe Ġfollowing Ġcondition . Ċ Ġ* Ċ Ġ* ĠWithout Ġlimiting Ġother Ġconditions Ġin Ġthe ĠLicense , Ġthe Ġgrant Ġof Ġrights Ġunder Ġthe Ċ Ġ* ĠLicense Ġwill Ġnot Ġinclude , Ġand Ġthe ĠLicense Ġdoes Ġnot Ġgrant Ġto Ġyou , Ġthe Ġright Ġto Ċ Ġ* ĠS ell Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠFor Ġpurposes Ġof Ġthe Ġfore going , ĠâĢľ Sell âĢĿ Ġmeans Ġpract icing Ġany Ġor Ġall Ġof Ġthe Ġrights Ċ Ġ* Ġgranted Ġto Ġyou Ġunder Ġthe ĠLicense Ġto Ġprovide Ġto Ġthird Ġparties , Ġfor Ġa Ġfee Ġor Ċ Ġ* Ġother Ġconsideration Ġ( including Ġwithout Ġlimitation Ġfees Ġfor Ġhosting Ġor Ċ Ġ* Ġconsult ing / Ġsupport Ġservices Ġrelated Ġto Ġthe ĠSoftware ), Ġa Ġproduct Ġor Ġservice Ċ Ġ* Ġwhose Ġvalue Ġder ives , Ġentirely Ġor Ġsubstant ially , Ġfrom Ġthe Ġfunctionality Ġof Ġthe Ċ Ġ* ĠSoftware . ĠAny Ġlicense Ġnotice Ġor Ġat tribution Ġrequired Ġby Ġthe ĠLicense Ġmust Ġalso Ċ Ġ* Ġinclude Ġthis ĠCommons ĠClause ĠLicense ĠCondition Ġnotice . Ċ Ġ* Ċ Ġ* ĠSoftware : ĠInf init ic Ċ Ġ* Ċ Ġ* ĠLicense : ĠMIT ĠLicense Ġ( https :// opensource . org / licenses / MIT ) Ċ Ġ* Ċ Ġ* ĠLic ensor : Ġinf init ic . io Ċ Ġ*/ Ċ Ċ package Ġio . inf init ic . common . ser De . json Ċ Ċ import Ġcom . fasterxml . jackson . annotation . JsonIgnore Ċ import Ġcom . fasterxml . jackson . core . Json Generator Ċ import Ġcom . fasterxml . jackson . databind . Json Serializer Ċ import Ġcom . fasterxml . jackson . databind . Serialization Feature Ċ import Ġcom . fasterxml . jackson . databind . Serializer Provider Ċ import Ġcom . fasterxml . jackson . databind . annotation . Json Serialize Ċ import Ġcom . fasterxml . jackson . datatype . js r 3 1 0 . Java Time Module Ċ import Ġcom . fasterxml . jackson . module . kotlin . Kotlin Module Ċ import Ġcom . fasterxml . jackson . module . kotlin . json Mapper Ċ import Ġorg . apache . avro . specific . Specific Record Base Ċ import Ġjava . io . IOException Ċ Ċ object ĠJson Ġ{ ĊĠĠĠ Ġprivate Ġval Ġmapper Ġ= Ġjson Mapper Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Mix In ( Specific Record Base :: class . java , ĠAv ro Mix In :: class . java ) ĊĠĠĠĠĠĠĠ Ġadd Mix In ( Exception :: class . java , ĠException Mix In :: class . java ) ĊĠĠĠĠĠĠĠ Ġconfigure ( Serialization Feature . WRITE _ DAT ES _ AS _ TIMESTAMP S , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġadd Module ( Java Time Module ()) ĊĠĠĠĠĠĠĠ Ġadd Module ( Kotlin Module ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstringify ( msg : ĠAny ?, Ġpretty : ĠBoolean Ġ= Ġfalse ): ĠString Ġ= Ġwhen Ġ( pretty ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtrue Ġ-> Ġmapper . writer WithDefault PrettyPrinter (). writeValue AsString ( msg ) ĊĠĠĠĠĠĠĠ Ġfalse Ġ-> Ġmapper . writeValue AsString ( msg ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< T > Ġparse ( json : ĠString , Ġklass : ĠClass < out ĠT >): ĠT Ġ= Ġmapper . readValue ( json , Ġklass ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCause Ġshould Ġnot Ġbe Ġincluded Ġto Ġthe Ġjson , Ġas Ġit Ġtriggers ĊĠĠĠĠ Ġ* Ġa Ġcircular Ġreference Ġwhen Ġcause Ġ= Ġthis ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġabstract Ġclass ĠException Mix In Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ JsonIgnore Ġabstract Ġfun Ġget Cause (): ĠThrowable ĊĠĠĠĠĠĠĠ Ġ@ JsonIgnore Ġabstract Ġfun ĠgetMessage (): ĠString ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSchema Ġand ĠData Ġshould Ġnot Ġbe Ġincluded Ġto Ġthe Ġjson ĊĠĠĠĠ Ġ* Ġhttps :// stackoverflow . com / questions / 5 6 7 4 2 2 2 6 / avro - generated - class - issue - with - json - conversion - kotlin ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIMPORT ANT : Ġproperties Ġof Ġgenerated ĠAv ro Ġclasses ĠMUST Ġhave Ġpublic Ġvisibility ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġabstract Ġclass ĠAv ro Mix In Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ JsonIgnore Ġabstract Ġfun Ġget Schema (): Ġorg . apache . avro . Schema ĊĠĠĠĠĠĠĠ Ġ@ JsonIgnore Ġabstract Ġfun Ġget Specific Data (): Ġorg . apache . avro . specific . Specific Data ĊĊĠĠĠĠĠĠĠ Ġ@ Json Serialize ( using Ġ= ĠAv ro List String Serializer :: class ) ĊĠĠĠĠĠĠĠ Ġabstract Ġfun Ġget ListOf String (): ĠList < String > ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġhttps :// issues . apache . org / jira / browse / AV RO - 2 7 0 2 ĊĠĠĠ Ġprivate Ġclass ĠAv ro List String Serializer Ġ: ĠJsonSerializer < List < String >>() Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġserialize ( value : ĠList < String >, Ġgen : ĠJson Generator , Ġserializers : ĠSerializer Provider ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen . write Start Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( o Ġin Ġvalue ) Ġ{ Ġgen . writeString ( o ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen . write End Array () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ