java - 如何使用 Java 和 Jackson 库反序列化 Json 字符串以获得多态结果?

标签 java json polymorphism jackson deserialization

我有一个 CONTAINER 类,其中包含一个 ListBaseClass 不是一个抽象类,但是 BaseClass 有 2 个子类型:BaseClassABaseClassB,每个子类型都有额外的字段。

BaseClass 有一个属性枚举类型,我可以从中确定一个对象是 BaseClass、BaseClassA 还是 BaseClassB,并且我想将其用作鉴别器。

我如何告诉 Jackson 鉴别器,以便当它反序列化 json 字符串时,它构建正确的对象。目前,每个对象都实例化为 BaseClass,因此我无法将其转换到我的 java 代码中。 与 @DiscriminatorFormula 和 @DiscriminatorValue 对于 hibernate 和实体的工作方式相同

我发现了这个问题:How can I polymorphic deserialization Json String using Java and Jackson Library?这有点接近,但这里用户只需要基本类型。

最佳答案

猜测您可能已经解决了这个问题,但如果没有,请查看 JsonTypeInfo 作为用子类型注释类以进行反序列化的方法。此链接http://programmerbruce.blogspot.com/2011/05/deserialize-json-with-jackson-into.html有一个很好的解释仍然有效。如果您无法注释您的类,您可以使用配置来设置混合项(请参阅 https://github.com/FasterXML/jackson-docs/wiki/JacksonMixInAnnotations ),以允许您向现有类添加注释。

关于java - 如何使用 Java 和 Jackson 库反序列化 Json 字符串以获得多态结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23906650/

相关文章:

json - curl URL 并在 Excel 单元格中发布结果?

c++ - 在继承层次中定义一次方法为virtual,使多态性发挥作用

java - Spring Broker channel 访问

java - Android/Java 如何捏合缩放/滚动整个 Activity ? (不是 ImageView )

javascript - Svelte 应用程序不会在浏览器中呈现我的数据

python - 如何使用 bs4 获取多个嵌套的 div 值并以 json 格式输出?

java - List<Dog> 是 List<Animal> 的子类吗?为什么 Java 泛型不是隐式多态的?

ruby-on-rails - 这是多态性的有效使用吗?如果是,我应该如何声明这种关系?

java - 从 browserstack 获取屏幕截图

java - 如何在java中获取图像文件(BufferedImage)的格式(ex :jpen, png,gif)