我有一个 CONTAINER 类,其中包含一个 List 。 BaseClass 不是一个抽象类,但是 BaseClass 有 2 个子类型:BaseClassA 和 BaseClassB,每个子类型都有额外的字段。
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/