On 05.04.2022 17:19, Andrea Selva wrote:
> On Tue, Apr 5, 2022 at 5:15 PM Chris Mair <
ch...@1006.org> wrote:
>>
>> Non puoi vederlo come oggetto e ArrayList<oggetto> e sfruttare
>> il fatto che Jackson mappa anche List e Map oltre che gli oggetti?
>
> Da come l'ho letta, se capisco bene la tua necessità è che la "lista
> di S" derivi da S a sua volta. Quindi ci sarebbe la super classe S che
> riporta la stato comune, una classe collection che subclassa S e che
> può contenere altri S.
>
> Forse potresti usare il composite pattern.
>
Mi spiego meglio. Vorrei da un lato un json del tipo:
{
"esito": 0,
"messaggio": "tutto ok",
"info1": "",
"info2": "",
...
}
e dall'altra:
{
"esito": 0,
"messaggio": "tutto ok",
"lista":[{
"info1": "",
"info2": "",
...
},
{
"info1": "",
"info2": "",
...
},
{
"info1": "",
"info2": "",
...
},
...
]
}
Fino ad ora avevo una
class S {
private int esito;
private String messaggio;
// getter/setter
}
e una
class Info extends S {
private String info1;
...
}
Attualmente (per un refuso) la seconda API restituisce un Info[], ed è
sbagliato, perché il json deve avere esito e messaggio a livello base, e
non ripetuto per ogni elemento della lista.
Una soluzione veloce sarebbe definire:
class ListaInfo extends S {
List<Info> infos;
}
Personalmente la trovo poco elegante, ma è legata ad una mia personale
mania (ereditata dai tempi del C su dsp) di "ottimizzazione di tempi e
spazi" - vedi quegli esito/messaggio inutili negli elementi della lista.
Quello che vorrei evitare è definire
class Info extends S {...}
e
class InfoEntry {...}
perfettamente identiche, a parte la superclasse.
--
Mick