Heim >Java >javaLernprogramm >Wie kann Jackson verwendet werden, um die Typlöschung während der Deserialisierung generischer Typen zu beheben?
In Ihrem komplexen Szenario versuchen Sie, JSON-Daten in eine generische Methode zu deserialisieren, die eine MyRequest< ;T> Typ. Aufgrund der Typlöschung von Java stößt Jackson jedoch auf ein Problem, bei dem der generische Typ T zur Laufzeit nicht beibehalten wird. Folglich behandelt Jackson das verschachtelte MyRequest
Um dieses Problem zu beheben und den erwarteten Typ anzugeben, der als T zurückgegeben werden soll, müssen Sie Jackson explizit angeben Typinformationen. Dies kann erreicht werden, indem ein JavaType-Objekt mithilfe der Methoden getTypeFactory() und constructionCollectionType() erstellt wird:
<code class="java">JavaType type = mapper.getTypeFactory() .constructCollectionType(List.class, Foo.class);</code>
Ersetzen Sie List.class durch den Typ der Liste, die Sie voraussichtlich deserialisieren möchten (z. B. List
Sobald Sie das JavaType-Objekt haben, können Sie es verwenden, um die JSON-Daten in den erwarteten generischen Typ zu deserialisieren:
<code class="java">List<Foo> list = mapper.readValue(new File("input.json"), type);</code>
Durch die Bereitstellung dieser expliziten Typinformationen an Jackson wird die verschachtelte MyRequest
Das obige ist der detaillierte Inhalt vonWie kann Jackson verwendet werden, um die Typlöschung während der Deserialisierung generischer Typen zu beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!