使用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中文網其他相關文章!