package Ġcom . example . useful _ photo _ album . shared Ċ Ċ import Ġcom . example . useful _ photo _ album . shared . json . Exclude Ċ import Ġcom . google . gson .* Ċ import Ġcom . google . gson . reflect . Type Token Ċ import Ġjava . lang . reflect . Type Ċ Ċ // ĠUseful Ġphoto Ġalbum Ċ object ĠUp a Json Ġ{ ĊĠĠĠ Ġprivate Ġval Ġuseful Photo Album Ex clusion Strategy Ġ= Ġobject Ġ: ĠEx clusion Strategy Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġshould Skip Class ( clazz : ĠClass < *> ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġshould Skip Field ( f : ĠField Attributes ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexclude Ġ= Ġf !!. getAnnotation ( Exclude :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġexclude Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġval Ġinternal Builder Ġ= ĠGson Builder () ĊĠĠĠĠĠĠĠ Ġ// . register Type Adapter Factory () ĊĠĠĠĠĠĠĠ Ġ. setField Naming Policy ( Field Naming Policy . LOWER _ CASE _ WITH _ UNDER SCO RES ) ĊĠĠĠĠĠĠĠ Ġ. add Serialization Ex clusion Strategy ( useful Photo Album Ex clusion Strategy ) ĊĠĠĠĠĠĠĠ Ġ. add Deserialization Ex clusion Strategy ( useful Photo Album Ex clusion Strategy ) ĊĊĠĠĠ Ġprivate Ġval Ġinternal NoUn ders core Builder Ġ= ĠGson Builder () ĊĠĠĠĠĠĠĠ Ġ// . register Type Adapter Factory () ĊĠĠĠĠĠĠĠ Ġ. add Serialization Ex clusion Strategy ( useful Photo Album Ex clusion Strategy ) ĊĠĠĠĠĠĠĠ Ġ. add Deserialization Ex clusion Strategy ( useful Photo Album Ex clusion Strategy ) ĊĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ suppress ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġbase : ĠGson Ġ= Ġinternal Builder . create () ĊĠĠĠ Ġval Ġbase NoUn ders core : ĠGson Ġ= Ġinternal NoUn ders core Builder . create () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ suppress ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġpretty : ĠGson Ġ= Ġinternal Builder . set Pretty Print ing (). create () ĊĊĠĠĠ Ġfun Ġ< T > Ġlist FromJson ( string : ĠString , Ġtype : ĠClass < T >): ĠList < T > Ġ= ĊĠĠĠĠĠĠĠ Ġbase . fromJson ( string , ĠType Token . getParameter ized ( List :: class . java , Ġtype ). type ) ĊĊĠĠĠ Ġfun Ġ< T > Ġparameter ized FromJson ( string : ĠString , Ġtype 1 : ĠType , Ġtype 2 : ĠType ): ĠT Ġ= ĊĠĠĠĠĠĠĠ Ġbase . fromJson ( string , ĠType Token . getParameter ized ( type 1 , Ġtype 2 ). type ) ĊĊĊĠĠĠ Ġfun Ġ< T > ĠtoJson ( model : ĠT ): ĠString Ġ= Ġbase . toJson ( model ) ĊĠĠĠ Ġfun Ġ< T > Ġfrom Json ( string : ĠString , Ġtype 1 : ĠType ): ĠT Ġ= Ġbase . fromJson ( string , Ġtype 1 ) Ċ }