首页  >  文章  >  Java  >  为什么在尝试使用 Jackson 将 JSON 反序列化为多态类型时会出现编译错误?

为什么在尝试使用 Jackson 将 JSON 反序列化为多态类型时会出现编译错误?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-19 08:31:02643浏览

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn