首頁 > Java > java教程 > 主體

為什麼在嘗試使用 Jackson 將 JSON 反序列化為多型別時會出現編譯錯誤?

Mary-Kate Olsen
發布: 2024-11-19 08:31:02
原創
645 人瀏覽過

Why am I getting a compile error when trying to deserialize JSON with Jackson into polymorphic types?

使用Jackson 將JSON 反序列化為多態性類型- 編譯錯誤澄清

提供的程式碼片段中遇到的錯誤與不片段中遇到的錯誤與不片段正確使用ObjectMapper 的readValue 方法。具體來說,參數類型與預期的方法簽章不符。

預期的方法簽章:

public <T> T readValue(JsonParser jp, Class<T> valueType)
                          throws IOException, JsonProcessingException
登入後複製

錯誤的方法呼叫:

return mapper.readValue(root, animalClass);
登入後複製

在錯誤的呼叫中,第一個參數是ObjectNode 而不是JsonParser。出現此不正確的參數類型是因為程式碼嘗試使用 mapper.readTree(jp) 從 JsonParser 檢索 ObjectNode。然而,這種轉換的正確方法是mapper.readtree(jp)(注意“Tree”中小寫的“t”)。

解決方案:

修正編譯錯誤,將行更改為:

return mapper.readValue(mapper.readTree(jp), animalClass);
登入後複製

此更正可確保readValue 的第一個參數是JsonParser,第二個參數是目標類別類型,animalClass。

以上是為什麼在嘗試使用 Jackson 將 JSON 反序列化為多型別時會出現編譯錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板