package Ġk hal a . internal . serialization . json Ċ Ċ import Ġc names . structs . json _ object Ċ import Ġk hal a . internal . c interop . json .* Ċ import Ġkotlinx . c interop .* Ċ Ċ actual Ġfun Ġparse Json ( json String : ĠString ): ĠStruct ured Ġ{ ĊĠĠĠ Ġreturn Ġparse Json ( json _ tok ener _ parse ( json String )) Ċ } Ċ Ċ private Ġfun Ġparse Json ( jsonObject : ĠC Pointer < json _ object >? ): ĠStruct ured Ġ{ ĊĠĠĠ ĠjsonObject Ġ?: Ġreturn Ġnull ĊĠĠĠ Ġreturn Ġwhen Ġ( json _ object _ get _ type ( jsonObject )) Ġ{ ĊĠĠĠĠĠĠĠ Ġjson _ type . json _ type _ null Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġjson _ type . json _ type _ boolean Ġ-> Ġ( json _ object _ get _ boolean ( jsonObject ) Ġ!= Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġjson _ type . json _ type _ int Ġ-> Ġjson _ object _ get _ int ( jsonObject ) ĊĠĠĠĠĠĠĠ Ġjson _ type . json _ type _ double Ġ-> Ġjson _ object _ get _ double ( jsonObject ) ĊĠĠĠĠĠĠĠ Ġjson _ type . json _ type _ string Ġ-> Ġjson _ object _ get _ string ( jsonObject )?. to K String () ĊĠĠĠĠĠĠĠ Ġjson _ type . json _ type _ array Ġ-> ĠjsonObject . toList () ĊĠĠĠĠĠĠĠ Ġjson _ type . json _ type _ object Ġ-> ĠjsonObject . toMap () ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠC Pointer < json _ object >. toList (): ĠList < Any ?> ? Ġ{ ĊĠĠĠ Ġval Ġjson Array Ġ= Ġjson _ object _ get _ array ( this )?. point ed Ġ?: Ġreturn Ġnull ĊĠĠĠ Ġval Ġlength Ġ= Ġjson Array . length . convert < Int >() ĊĠĠĠ Ġreturn ĠList ( length ) Ġ{ Ġparse Json ( json Array . array ?. get ( it )?. reinterpret ()) Ġ} Ċ } Ċ Ċ private Ġfun ĠC Pointer < json _ object >. toMap (): ĠMap < String , ĠAny ?> Ġ{ ĊĠĠĠ Ġval Ġmap Ġ= Ġmutable Map Of < String , ĠAny ?> () ĊĠĠĠ Ġmem Scoped Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġiter Ġ= Ġjson _ object _ iter _ begin ( this @ toMap ). get Pointer ( this ) ĊĠĠĠĠĠĠĠ Ġval Ġend Iter Ġ= Ġjson _ object _ iter _ end ( this @ toMap ) ĊĠĠĠĠĠĠĠ Ġwhile Ġ( json _ object _ iter _ equal ( iter , Ġend Iter ) Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġjson _ object _ iter _ peek _ name ( iter )?. to K String () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġjson _ object _ iter _ peek _ value ( iter ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( key Ġ!= Ġnull ) Ġmap [ key ] Ġ= Ġparse Json ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjson _ object _ iter _ next ( iter ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġmap Ċ }