Ho un servizio Web che restituisce un elenco come JSON. Usa Jackson per mappare un elenco di POJO Java in JSON. Il problema è che la rappresentazione JSON ha un oggetto wrapper attorno all'array e io voglio solo l'array. Vale a dire, sto ottenendo questo:Elimina oggetto wrapper durante la serializzazione di oggetti Java in JSON utilizzando Jackson
{"optionDtoList":[{...}, ..., {...}]}
quando quello che voglio veramente è questo:
[{...}, ..., {...}]
sto serializzazione direttamente la Lista Java; Non sto avvolgendo la lista con un oggetto wrapper e serializzando un oggetto wrapper. È Jackson che sembra aggiungere l'oggetto wrapper JavaScript.
Presumo che ci siano alcune annotazioni che posso usare sul POJO per sopprimere l'oggetto wrapper ma non lo vedo.
Vincoli sulla soluzione
mi piacerebbe risolvere questo problema sul lato servizio piuttosto che staccava l'involucro sul client. Il client è un widget dell'interfaccia utente jQuery (il widget di completamento automatico, non che importi) che si aspetta un array semplice e non voglio modificare il widget stesso.
Quello che ho provato
- ho provato sostituisce l'elenco dei POJO Java con una serie di POJO Java e il risultato è lo stesso.
- Ho provato
@JsonTypeInfo(use = Id.NONE)
pensando che questo potrebbe sopprimere il wrapper, ma non è così.
Sembra come se si stesse serializzando l'oggetto sbagliato. Perché non puoi semplicemente usare il Mapper per serializzare la lista direttamente invece di serializzare il POJO circostante? –
Sto serializzando la lista direttamente. I POJO sono nella lista. Il problema è che quando serializzo la lista, Jackson aggiunge un wrapper attorno ad esso. Stavo pensando che forse Jackson stesse distinguendo l'oggetto list dal suo array di supporto, così ho persino provato a serializzare direttamente un array. Senza fortuna; Jackson aggiunge ancora l'oggetto wrapper. –
Puoi mostrarci il codice? Uso Jackson abbastanza frequentemente e non ho mai provato quello che stai descrivendo. –