Spring / json: Konvertiert eine typisierte Sammlung wie List & lt; MyPojo & gt;

Ich versuche, Marschall eine Liste: List<Pojo> Objekte über die Spring-Rest-Vorlage.

Kann ich weitergeben einfache Pojo Objekte, aber ich finde keine Dokumentation, die beschreibt, wie das senden einer List<Pojo> Objekte.

Frühjahr wird mit der Jackson-JSON-Umsetzung der HttpMessageConverter. Die jackson-Dokumentation umfasst dieses:

Neben der Bindung an POJOs und
"einfache" Arten, es ist ein
zusätzliche Variante: die Bindung an
generische (typed) Container. In diesem Fall
erfordert spezielle Handhabung durch
sogenannte Type-Erasure (von Java
zum implementieren von generics in etwas
rückwärts-kompatiblen Art und Weise), die
verhindert, dass Sie mit so etwas wie
Collection<String>.class (die nicht
nicht kompilieren).

Also, wenn Sie wollen, binden Sie Daten in eine
Map<String,User> benötigen Sie:

Map<String,User> result = mapper.readValue(src, new TypeReference<Map<String,User>>() {});

wo TypeReference ist nur erforderlich, um
pass generischen Typ-definition (via
anynomous innere Klasse in diesem Fall):
der wichtige Teil ist
<Map<String,User>> definiert Art
zu binden.

Kann dies erreicht werden im Frühjahr Vorlage? Ich nahm einen Blick auf den code und es macht mir die Sache nicht, aber vielleicht habe ich einfach nicht wissen, einige Tricks.


Lösung

Die ultimative Lösung, Dank der hilfreichen Antworten weiter unten, war nicht senden Sie eine Liste, sondern senden ein einzelnes Objekt, das erweitert einfach die Liste, wie: class PojoList extends ArrayList<Pojo>. Frühjahr erfolgreich Marschall dieses Objekt, und es leistet das gleiche wie das senden einer List<Pojo> ist, obwohl es ein wenig weniger saubere Lösung. Ich postete auch JIRA im Frühjahr für Sie zum beheben dieses Manko in Ihren HttpMessageConverter - Schnittstelle.

InformationsquelleAutor der Frage David Parks | 2011-05-30

Schreibe einen Kommentar