@ file : Suppress (" unused ") Ċ Ċ package Ġredux Ċ Ċ import Ġkotlinx . serialization .* Ċ import Ġkotlinx . serialization . json .* Ċ Ċ val Ġdefault Json Ġ= ĠJson ( ĊĠĠĠ ĠJson Configuration . Stable . copy ( ĊĠĠĠĠĠĠĠ Ġis Len ient Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġignore Unknown Keys Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġserialize Special Floating Point Values Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġuse Array Pol ym orphism Ġ= Ġtrue ĊĠĠĠ Ġ) Ċ ) Ċ Ċ @ Implicit Reflection Serializer Ċ inline Ġfun Ġ< re ified ĠA Ġ: ĠR Action > Ġserialize Action ( action : ĠA ): ĠString Ġ{ ĊĠĠĠ Ġvar Ġobj Ġ= Ġdefault Json . toJson ( action ) Ġas ĠJsonObject ĊĠĠĠ Ġobj Ġ= ĠJsonObject ( obj Ġ+ Ġ(" type " Ġto ĠJson Primitive ( A :: class . simple Name ))) ĊĠĠĠ Ġreturn Ġdefault Json . stringify ( obj ) Ċ } Ċ Ċ @ Implicit Reflection Serializer Ċ inline Ġfun Ġ< re ified ĠA Ġ: ĠR Action > Ġdeserialize Action ( action : ĠString ): ĠA ? Ġ{ ĊĠĠĠ Ġval Ġobj Ġ= Ġdefault Json . parse Json ( action ) Ġas ĠJsonObject ĊĠĠĠ Ġval Ġtype : ĠString ? Ġ= Ġobj . get Primitive OrNull (" type ") ?. content OrNull ĊĠĠĠ Ġreturn Ġif Ġ( type Ġ== ĠA :: class . simple Name ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdefault Json . parse ( action ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġnull ĊĠĠĠ Ġ} Ċ } Ċ