package Ġopen food facts . github . scr ach x . open food . models . entities . aller gen Ċ Ċ import Ġcom . fasterxml . jackson . core . Json Parser Ċ import Ġcom . fasterxml . jackson . databind . Deserialization Context Ċ import Ġcom . fasterxml . jackson . databind . JsonNode Ċ import Ġcom . fasterxml . jackson . databind . de ser . std . Std Deserializer Ċ import Ġopen food facts . github . scr ach x . open food . utils . Deserializer Helper Ċ import Ġopen food facts . github . scr ach x . open food . utils . Deserializer Helper . extract Map FromJson Node Ċ import Ġjava . io . IOException Ċ Ċ /** Ċ Ġ* ĠCustom Ġde serializer Ġfor Ġ[ All erg ens Wrapper ] Ċ Ġ* Ċ Ġ* Ġ@ author ĠL ob ster Ġ 2 0 1 8 - 0 3 - 0 4 Ċ Ġ* Ġ@ author Ġro ss - h ollow ay 9 4 Ġ 2 0 1 8 - 0 3 - 1 4 Ċ Ġ*/ Ċ class ĠAll erg ens Wrapper Deserializer Ġ: ĠStd Deserializer < All erg ens Wrapper >( All erg ens Wrapper :: class . java ) Ġ{ ĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġdeserialize ( jp : ĠJson Parser , Ġctxt : ĠDeserial ization Context ): ĠAll erg ens Wrapper Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġall erg ens Ġ= Ġarray ListOf < All er gen Response >() ĊĠĠĠĠĠĠĠ Ġjp . codec . read Tree < JsonNode >( jp ). fields (). forEach Ġ{ Ġ( key , Ġvalue ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnames Node Ġ= Ġvalue [ Deserializer Helper . NAMES _ KEY ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( names Node Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnames Ġ= Ġextract Map FromJson Node ( names Node ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value . has ( Deserializer Helper . WI K ID ATA _ KEY )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall erg ens . add ( All er gen Response ( key , Ġnames , Ġvalue [ Deserializer Helper . WI K ID ATA _ KEY ]. toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall erg ens . add ( All er gen Response ( key , Ġnames )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠAll erg ens Wrapper ( all erg ens ) ĊĠĠĠ Ġ} Ċ }