package Ġcom . uber to b . k ond or . json Ċ Ċ import Ġcom . uber to b . k ond or . json . json node .* Ċ import Ġcom . uber to b . k ond or . json . schema . array Schema Ċ import Ġcom . uber to b . k ond or . outcome . Outcome Ċ import Ġcom . uber to b . k ond or . outcome . extract List Ċ Ċ interface ĠJ Array < T Ġ: ĠAny , ĠCT Ġ: ĠIterable < T >> Ġ: ĠJ Array Converter < CT > Ġ{ ĊĊĠĠĠ Ġval Ġconverter : ĠJ Converter < T > ĊĊĠĠĠ Ġfun ĠconvertTo Collection ( from : ĠIterable < T >): ĠCT ĊĊĠĠĠ Ġoverride Ġfun Ġfrom JsonNode ( node : ĠJsonNode Array ): ĠOut come < Json Error , ĠCT > Ġ= ĊĠĠĠĠĠĠĠ Ġmap From Array ( node , Ġconverter :: fromJson Node Base ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. transform Ġ{ ĠconvertTo Collection ( it ) Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġto JsonNode ( value : ĠCT , Ġpath : ĠNode Path ): ĠJsonNode Array Ġ= ĊĠĠĠĠĠĠĠ Ġmap ToJson ( value , Ġconverter :: toJson Node , Ġpath ) ĊĊĠĠĠ Ġprivate Ġfun Ġ< T Ġ: ĠAny > Ġmap ToJson ( objs : ĠIterable < T >, Ġf : Ġ( T , ĠNode Path ) Ġ-> ĠJsonNode , Ġpath : ĠNode Path ): ĠJsonNode Array Ġ= ĊĠĠĠĠĠĠĠ ĠJsonNode Array ( objs . map Ġ{ Ġf ( it , Ġpath ) Ġ}, Ġpath ) ĊĊĠĠĠ Ġprivate Ġfun Ġ< T Ġ: ĠAny > Ġmap From Array ( ĊĠĠĠĠĠĠĠ Ġnode : ĠJsonNode Array , ĊĠĠĠĠĠĠĠ Ġf : Ġ( JsonNode ) Ġ-> ĠJson Outcome < T ?> ĊĠĠĠ Ġ): ĠJson Outcome < Iterable < T >> Ġ= Ġnode . values . map ( f ) ĊĠĠĠĠĠĠĠ Ġ. extract List () ĊĠĠĠĠĠĠĠ Ġ. transform Ġ{ Ġit . filter NotNull () Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġschema (): ĠJsonNode Object Ġ= Ġarray Schema ( converter ) Ċ Ċ } ĊĊ Ċ data Ġclass ĠJ List < T Ġ: ĠAny >( override Ġval Ġconverter : ĠJ Converter < T >) Ġ: ĠJ Array < T , ĠList < T >> Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠconvertTo Collection ( from : ĠIterable < T >): ĠList < T > Ġ= Ġfrom . toList () ĊĠĠĠ Ġoverride Ġval Ġnode Type Ġ= ĠArray Node Ċ } Ċ Ċ data Ġclass ĠJ Set < T Ġ: ĠAny >( override Ġval Ġconverter : ĠJ Converter < T >) Ġ: ĠJ Array < T , ĠSet < T >> Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠconvertTo Collection ( from : ĠIterable < T >): ĠSet < T > Ġ= Ġfrom . toSet () ĊĠĠĠ Ġoverride Ġval Ġnode Type Ġ= ĠArray Node Ċ }