首页 > 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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板