首页  >  文章  >  Java  >  如何使用 Jackson 将 JSON 反序列化为多态类型:解决'无法直接映射”编译错误?

如何使用 Jackson 将 JSON 反序列化为多态类型:解决'无法直接映射”编译错误?

Patricia Arquette
Patricia Arquette原创
2024-11-12 07:54:01762浏览

How to Deserialize JSON into Polymorphic Types with Jackson: Resolving the

使用 Jackson 将 JSON 反序列化为多态类型:解决编译错误

试图解决使用 Jackson 的 ObjectMapper 反序列化多态 JSON 时的编译错误,罪魁祸首在于readValue() 方法的参数类型不匹配。

有问题的行是:

通用 readValue() 方法需要 TypeReference 或 Class 作为第二个参数,但 AnimalClass是 Class,编译器无法直接映射。

使用注释的解决方案:

要解决此错误并允许多态反序列化,我们可以利用 Jackson 的 JSON 注释。在这种方法中,使用了 @JsonTypeInfo、@JsonSubTypes 和 @JsonIgnoreProperties 注解。

修改 Animal 类及其子类,如下所示:

Animal 类:

狗和猫子类:

通过这些注释,Jackson 现在可以正确地将多态 JSON 数据反序列化为适当的子类。更正后的 readValue() 行将是:

以上是如何使用 Jackson 将 JSON 反序列化为多态类型:解决'无法直接映射”编译错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

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