package Ġcom . und abot . iz zy . parser Ċ Ċ import Ġcom . und abot . iz zy . models . Errors Ċ import Ġcom . und abot . iz zy . models . I zz y Resource Ċ import Ġcom . und abot . iz zy . models . Json Document Ċ Ċ class ĠI zz y ( private Ġval Ġiz zy Json Parser : ĠI zz y Json Parser ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġdeserialize Links Ġ= ĠDeserialize Links () ĊĠĠĠ Ġprivate Ġval Ġvalidate Json Document Ġ= ĠValidate Json Document () ĊĠĠĠ Ġprivate Ġval Ġdeserialize Errors Ġ= ĠDeserialize Errors () ĊĠĠĠ Ġprivate Ġval Ġdeserialize Meta Ġ= ĠDeserialize Meta () ĊĠĠĠ Ġprivate Ġval Ġdeserialize Data Ġ= ĠDeserialize Data ( iz zy Json Parser ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ĠDeserial izes Ġthe Ġstring Ġto Ġa ĠJson Document . ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġjson Ġjson - API Ġcompliant Ġjson Ġin Ġstring Ġformat . ĊĠĠĠĠ Ġ* Ġ*/ ĊĊĠĠĠ Ġfun Ġ< T Ġ: ĠI zz y Resource > Ġdeserialize To Document ( json : ĠString ): ĠJson Document < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Tree Ġ= Ġiz zy Json Parser . parse ToJson Elements ( json ) ĊĠĠĠĠĠĠĠ Ġvalidate ( json Tree ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġresource : ĠT ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġerrors : ĠErrors ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġif Ġ( json Tree . has ( DATA )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresource Ġ= Ġdeserialize Data . for Single Resource ( json Tree ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( json Tree . has ( ERRORS )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerrors Ġ= Ġdeserialize Errors . from ( json Tree ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠJson Document ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġresource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlinks Ġ= Ġlinks From ( json Tree ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerrors Ġ= Ġerrors , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmeta Ġ= Ġmeta From ( json Tree ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ĠDeserial izes Ġthe Ġstring Ġto Ġa ĠJson Document Ġcontaining Ġa Ġlist Ġof Ġdata Ġobjects . ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġjson Ġjson - API Ġcompliant Ġjson Ġin Ġstring Ġformat . ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġfun Ġ< T Ġ: ĠI zz y Resource > Ġdeserialize To Collection ( json : ĠString ): ĠJson Document < List < T >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Tree Ġ= Ġiz zy Json Parser . parse ToJson Elements ( json ) ĊĠĠĠĠĠĠĠ Ġvalidate ( json Tree ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġresource Collection : ĠList < T >? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġerrors : ĠErrors ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġif Ġ( json Tree . has ( DATA )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresource Collection Ġ= Ġdeserialize Data . for Resource Collection ( json Tree ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( json Tree . has ( ERRORS )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerrors Ġ= Ġdeserialize Errors . from ( json Tree ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠJson Document ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġresource Collection , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlinks Ġ= Ġlinks From ( json Tree ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerrors Ġ= Ġerrors , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmeta Ġ= Ġmeta From ( json Tree ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSerial ises Ġresource Ġinto Ġa ĠJSON - API Ġcompliant Ġjson Ġstring ĊĠĠĠĠ Ġ* Ġ@ param Ġitem Ġitem Ġto Ġserialize . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< T Ġ: ĠI zz y Resource > Ġserialize Item ( item : ĠT ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= ĠJson Document ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResource To Serializable Document Mapper ( Relationship Field Mapper ()). map From ( item ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn Ġiz zy Json Parser . document ToJson ( document ). replace ( nullable Field (), Ġnull Value ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSerial ises Ġresource Ġcollection Ġinto Ġa ĠJSON - API Ġcompliant Ġjson Ġstring ĊĠĠĠĠ Ġ* Ġ@ param Ġitem Ġresource Ġcollection Ġto Ġserialize . ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġfun Ġ< T Ġ: ĠI zz y Resource > Ġserialize Item Collection ( item : ĠList < T >): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmapper Ġ= ĠResource To Serializable Document Mapper ( Relationship Field Mapper ()) ĊĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= ĠJson Document ( item . map Ġ{ Ġmapper . map From ( it ) Ġ}) ĊĠĠĠĠĠĠĠ Ġreturn Ġiz zy Json Parser . document Collection ToJson ( document ). replace ( nullable Field (), Ġnull Value ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ SuppressWarnings (" Function Only Return ing Constant ") ĊĠĠĠ Ġprivate Ġfun Ġnull Value (): ĠString Ġ= Ġ" null " ĊĊĠĠĠ Ġprivate Ġfun Ġnullable Field () Ġ= Ġ"\"" Ġ+ ĠData Wrapper . NULL ABLE _ FIELD Ġ+ Ġ"\"" ĊĊĠĠĠ Ġprivate Ġfun Ġlinks From ( json Tree : ĠJson Elements ) Ġ= Ġdeserialize Links . from ( json Tree ) ĊĊĠĠĠ Ġprivate Ġfun Ġmeta From ( json Tree : ĠJson Elements ) Ġ= Ġdeserialize Meta . from Root ( json Tree ) ĊĊĠĠĠ Ġprivate Ġfun Ġvalidate ( json Tree : ĠJson Elements ) Ġ= Ġvalidate Json Document . from ( json Tree ) Ċ } Ċ