Jackson - JSON-String deserialisieren - TypeReference vs TypeFactory.constructCollectionType
Zu deserialise JSON-string auf eine Liste von Klassen, verschiedene Möglichkeiten aufgeführt StackOverflow-Frage
Typ 1 (docs link):
List<SomeClass> someClassList = mapper.readValue(jsonString, typeFactory.constructCollectionType(List.class, SomeClass.class));
Typ 2 (docs link):
List<SomeClass> list = mapper.readValue(jsonString, new TypeReference<List<SomeClass>>() { });
Obwohl beide die 2 Typen über den job, was ist der Unterschied zwischen diesen Implementierungen ?
InformationsquelleAutor der Frage Arun | 2012-08-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nach dem Bau
JavaType
beide nennen dasselbe Deserialisierung-Funktionalität, so dass der einzige Unterschied ist die Art und Weise generischen Typ behandelt wird.Zweite ist völlig statisch, so geben müssen bekannt sein, kompilieren geben, und kann nicht variieren. So ist es ähnlich wie mit basic-Class-literal.
Erste ist dynamisch, so kann es verwendet werden, um Dinge gestalten, variieren hinsichtlich Ihrer Parametrisierung.
Ich persönlich bevorzuge die erste alternative, die für alle Fälle (es vermeidet die Bildung einer mehr anonyme innere Klassen), aber der zweite Platz kann man mehr lesbar.
InformationsquelleAutor der Antwort StaxMan