在複雜的場景中,您嘗試將JSON 資料反序列化為需要MyRequest< 的泛型方法;T>型別。然而,由於 Java 的類型擦除,Jackson 遇到了一個問題,即泛型類型 T 在運行時不會保留。因此,Jackson 將嵌套的 MyRequest
要解決此問題並將傳回的預期類型指定為 T,您需要向 Jackson 提供明確的類型資訊。這可以透過使用getTypeFactory() 和constructCollectionType() 方法建構JavaType 物件來實現:
<code class="java">JavaType type = mapper.getTypeFactory() .constructCollectionType(List.class, Foo.class);</code>
將List.class 替換為您希望反序列化的清單的類型(例如,List
獲得JavaType 物件後,您可以使用它將JSON 資料反序列化為預期的通用類型:
<code class="java">List<Foo> list = mapper.readValue(new File("input.json"), type);</code>
透過向Jackson 提供此顯式類型信息,它將正確反序列化嵌套的MyRequest
以上是如何使用 Jackson 來解決泛型類型反序列化過程中的類型擦除問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!