package Ġcom . mr star . kotlin _ playground Ċ Ċ import Ġcom . google . gson .* Ċ import Ġjava . lang . reflect . Type Ċ Ċ data Ġclass ĠCharacter ( val Ġid : ĠId , Ġval Ġname : ĠString ) Ċ Ċ data Ġclass ĠId ( val Ġvalue : ĠLong ) Ċ Ċ class ĠId Serializer Ġ: ĠJsonSerializer < Id > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġserialize ( src : ĠId , ĠtypeOf Src : ĠType , Ġcontext : ĠJson Serialization Context ): ĠJson Element ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ= ĠJson Primitive ( src . value ) Ċ } Ċ Ċ class ĠId Deserializer Ġ: ĠJson Deserializer < Id > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġdeserialize ( json : ĠJson Element , ĠtypeOf T : ĠType , Ġcontext : ĠJson Deserialization Context ): ĠId ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ= ĠId ( json . as Long ) Ċ } Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ Ġval Ġgson Ġ= ĠGson Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. register Type Adapter ( Id :: class . java , ĠId Serializer ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. register Type Adapter ( Id :: class . java , ĠId Deserializer ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĠĠĠ Ġprintln ( gson . toJson ( Id ( 1 L ))) ĊĊĠĠĠ Ġval Ġcharacter Ġ= Ġ""" {" name ":" Ry ota ", Ġ" id ": 0 } """ ĊĠĠĠ Ġprintln ( gson . fromJson ( character , ĠCharacter :: class . java )) Ċ } Ċ