package Ġcom . example . model Ċ Ċ import Ġcom . google . gson . JsonArray Ċ import Ġcom . google . gson . Json Element Ċ import Ġcom . google . gson . JsonObject Ċ import Ġcom . google . gson . Json ParseException Ċ import Ġcom . google . gson . Json Parser Ċ import Ġjava . lang . IllegalStateException Ċ import Ġjava . lang . Number FormatException Ċ import Ġkotlin . String Ċ import Ġkotlin . collections . ArrayList Ċ import Ġkotlin . collections . List Ċ import Ġkotlin . jvm . Jvm Static Ċ import Ġkotlin . jvm . Throws Ċ Ċ public Ġdata Ġclass ĠArticle ( ĊĠĠĠ Ġpublic Ġval Ġtitle : ĠString , ĊĠĠĠ Ġpublic Ġval Ġtags : ĠList < String >? Ġ= Ġnull , ĊĠĠĠ Ġpublic Ġval Ġauthors : ĠList < String > Ċ ) Ġ{ ĊĠĠĠ Ġpublic Ġfun ĠtoJson (): ĠJson Element Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Ġ= ĠJsonObject () ĊĠĠĠĠĠĠĠ Ġjson . addProperty (" title ", Ġtitle ) ĊĠĠĠĠĠĠĠ Ġtags ?. let Ġ{ Ġtemp Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtags Array Ġ= ĠJson Array ( temp . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp . forEach Ġ{ Ġtags Array . add ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjson . add (" tags ", Ġtags Array ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġauthors Array Ġ= ĠJson Array ( authors . size ) ĊĠĠĠĠĠĠĠ Ġauthors . forEach Ġ{ Ġauthors Array . add ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġjson . add (" authors ", Ġauthors Array ) ĊĠĠĠĠĠĠĠ Ġreturn Ġjson ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Throws ( Json ParseException :: class ) ĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġfrom Json ( serialized Object : ĠString ): ĠArticle Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠjsonObject Ġ= ĠJson Parser . parse String ( serialized Object ). as JsonObject ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= ĠjsonObject . get (" title "). asString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtags Ġ= ĠjsonObject . get (" tags ") ?. as JsonArray ?. let Ġ{ Ġjson Array Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠArrayList < String >( json Array . size ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Array . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcollection . add ( it . asString ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcollection ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġauthors Ġ= ĠjsonObject . get (" authors "). as JsonArray . let Ġ{ Ġjson Array Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠArrayList < String >( json Array . size ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Array . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcollection . add ( it . asString ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcollection ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠArticle ( title , Ġtags , Ġauthors ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIllegalStateException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠJson ParseException ( e . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNumber FormatException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠJson ParseException ( e . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ