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