Jackson 和泛型型別參考
在 Java 中,泛型用來表示可以用其他型別參數化的型別。這允許程式碼重用和更大的靈活性。然而,當使用 Jackson 處理 JSON 時,泛型類型可能會帶來某些挑戰。
存取 JSON 物件中的泛型屬性時會出現一個常見問題。考慮以下 Java 程式碼:
<code class="java">public MyRequest<t> tester() { TypeReference<mywrapper>> typeRef = new TypeReference<mywrapper>>(); MyWrapper<t> requestWrapper = (MyWrapper<t>) JsonConverter.fromJson(jsonRequest, typeRef); return requestWrapper.getRequest(); } public class MyWrapper<t> { private MyRequest<t> request; public MyRequest<t> getRequest() { return request; } public void setRequest(MyRequest<t> request) { this.request = request; } } public class MyRequest<t> { private List<t> myobjects; public void setMyObjects(List<t> ets) { this.myobjects = ets; } @NotNull @JsonIgnore public T getMyObject() { return myobjects.get(0); } }</t></t></t></t></t></t></t></t></t></mywrapper></mywrapper></t></code>
當呼叫 MyRequest 物件內的 getMyObject() 時,Jackson 會將巢狀的自訂物件作為 LinkedHashMap 傳回。這是因為 Jackson 無法僅根據泛型聲明來確定 T 的實際類型。
要解決此問題並指定 T 的類型,需要明確類別參數。這可以透過建構一個 JavaType 物件來完成,如下所示:
<code class="java">TypeReference<mywrapper>> typeRef = new TypeReference<mywrapper>>() {}; JavaType type = mapper.getTypeFactory().constructCollectionType(List.class, Foo.class); MyWrapper<foo> requestWrapper = mapper.readValue(jsonRequest, type);</foo></mywrapper></mywrapper></code>
在此範例中,Foo 類別表示 T 的實際類型。透過建構具有所需類型的 JavaType,Jackson 可以正確地反序列化JSON 物件並傳回正確類型的 T.
以上是如何在 Java 中使用 Jackson 反序列化 JSON 物件中的泛型類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章
刺客信條陰影:貝殼謎語解決方案
3 週前ByDDD
Windows 11 KB5054979中的新功能以及如何解決更新問題
2 週前ByDDD
在哪裡可以找到原子中的起重機控制鑰匙卡
3 週前ByDDD
節省R.E.P.O.解釋(並保存文件)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
刺客信條陰影 - 如何找到鐵匠,解鎖武器和裝甲定制
4 週前ByDDD

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3漢化版
中文版,非常好用

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

Atom編輯器mac版下載
最受歡迎的的開源編輯器

禪工作室 13.0.1
強大的PHP整合開發環境