package Ġio . ph at cat . number neighbors international . serialization . adapter Ċ Ċ import Ġcom . squareup . mos hi . Json DataException Ċ import Ġcom . squareup . mos hi . Json Reader Ċ import Ġio . ph at cat . number neighbors international . entity . Country Ċ Ċ /** Ċ Ġ* ĠParses Ġcountry Ġdata Ġfrom Ġnum verify Ġcountry Ġresponse . ĠManual Ġparsing Ġis Ġnecessary Ġbecause Ġthe ĠJSON Ċ Ġ* Ġstructure Ġdoesn 't Ġcontain Ġan Ġarray Ġof Ġobjects , Ġbut Ġinstead Ġa Ġvariable Ġamount Ġof Ġnamed Ġobjects . Ċ Ġ*/ Ċ class ĠCount ries Adapter Ġ: ĠReadOnly Json Adapter < List < Country >>() Ġ{ ĊĊĠ Ġprivate Ġval Ġoptions : ĠJson Reader . Options Ġ= ĠJson Reader . Options . of (" country _ name ", Ġ" di all ing _ code ") ĊĊĠ Ġoverride Ġfun Ġfrom Json ( reader : ĠJson Reader ): ĠList < Country > Ġ{ ĊĠĠĠ Ġif Ġ(! reader . hasNext ()) Ġ{ ĊĠĠĠĠĠ Ġ// ĠNot Ġyet Ġhandling Ġerror ĠJSON Ġfrom Ġthe ĠAPI Ġ( missing / invalid Ġaccess Ġkey Ġetc ) ĊĠĠĠĠĠ Ġthrow ĠJson DataException (" Invalid Ġdata Ġformat ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġlateinit Ġvar Ġcountry Code : ĠString ĊĠĠĠ Ġlateinit Ġvar Ġcountry Name : ĠString ĊĠĠĠ Ġlateinit Ġvar Ġdial ing Code : ĠString ĊĊĠĠĠ Ġval Ġcountries Ġ= Ġmutable ListOf < Country >() ĊĠĠĠ Ġreader . begin Object () ĊĠĠĠ Ġwhile Ġ( reader . hasNext ()) Ġ{ ĊĠĠĠĠĠ Ġcountry Code Ġ= Ġreader . next Name () ĊĠĠĠĠĠ Ġreader . begin Object () ĊĊĠĠĠĠĠ Ġwhile Ġ( reader . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( reader . select Name ( options )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġcountry Name Ġ= Ġreader . next String () ĊĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġdial ing Code Ġ= Ġreader . next String () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġreader . end Object () ĊĠĠĠĠĠ Ġcountries . add ( ĊĠĠĠĠĠĠĠ ĠCountry ( ĊĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġcountry Name , ĊĠĠĠĠĠĠĠĠĠ Ġcountry Code Ġ= Ġcountry Code , ĊĠĠĠĠĠĠĠĠĠ Ġdial ing Code Ġ= Ġdial ing Code ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreader . end Object () ĊĊĠĠĠ Ġreturn Ġcountries ĊĠ Ġ} Ċ }