Ho un paio di POJO che assomiglia a questo:Jackson serializzazione personalizzata in Spring 3 MVC
class Items {
List<Item> items;
public List<Item> getItems() {
return items;
}
...
}
class Item {
String name;
Date insertionDate;
...
}
io voglio essere in grado di serializzare il campo Date
in Item
utilizzando un formato personalizzato (aggiungere un prefisso al data, qualcosa come "Date: xxx"), ma non voglio farlo sempre (dato che viene utilizzato da altri utenti che non richiedono questo prefisso), solo in casi specifici.
Se io annotare Item
s' getInsertionDate()
con @JsonSerialize(using = CustomDateSerializer.class)
io probabilmente può fare questo lavoro, tuttavia , non voglio farlo dal momento che non faccio sempre desidera serializzare questo campo con questo metodo, solo in un caso specifico.
Così idealmente, vorrei farlo in mio controller che non vuole personalizzare la serializzazione:
@JsonSerialize(using = CustomDateSerializer.class)
public List<Item> getItems() {
....
}
dove CustomDateSerializer extends SerializerBase<Date>
e Jackson sarebbe capire che dovrebbe serializzare ogni elemento nella List
utilizzando il serializzatore predefinito, e quando colpisce un oggetto Date
, dovrebbe utilizzare il mio serializzatore personalizzato. Ovviamente questo non funziona poiché non è così che viene usato lo @JsonSerialize
, ma c'è un modo per fare questo lavoro se non per avvolgere lo Item
con un wrapper e usare quel wrapper quando voglio la serializzazione personalizzata? Sto pensando a questo nel modo sbagliato e c'è un altro modo per farlo?
Nota che sto utilizzando Spring MVC, quindi non sto chiamando direttamente la serializzazione.
Qualsiasi aiuto sarebbe molto apprezzato :)
una domanda: se creo un POJO separato invece di Elenco, posso annotarlo in qualche modo per applicare questa formattazione a tutte le date all'interno dell'elenco che contiene oppure devo annotare separatamente ogni oggetto Date? – TheZuck
È possibile annotare la proprietà Elenco e deve essere applicata a tutte le date (ecc.) Contenute. – StaxMan
Ci proverò quando passerò a 2.0+, attualmente 1.9.7 e 2.0+ non è ancora nel repository standard di Maven. Grazie per il tuo aiuto!! – TheZuck