gpt4 book ai didi

java - Jackson 反序列化不受我控制的多态类型

转载 作者:行者123 更新时间:2023-11-30 06:56:34 25 4
gpt4 key购买 nike

我想要(取消)编码包含 this type 字段的对象。虽然序列化效果很好,但我无法反序列化它。实现类不在我的控制之下。我想一般来说,由于缺少构造函数和/或 setter ,不可能反序列化到原始实现类。

另一方面,我想保存 json 中包含的所有信息(作为 java 对象)。

我有哪些选择来实现这一目标,是否有最佳或良好实践?

最佳答案

您可以使用 Jackson Mixins 在相关类/字段上伪造 @JsonDeserialize(using=CustomDeserializer.class) 注释。然后您可以尝试在给定的反序列化器类中自己创建实例。

// I'm not sure whether annotations (@JsonTypeInfo) on class level are supported as well to allow the polymorphistic type decision.
abstract class MixIn {

// make constructor usable if available
MixIn(@JsonProperty("id") int a, @JsonProperty("name") String b) { }

@JsonDeserialize(using=CustomDeserializer.class) abstract TypeX getTypeX();

}

然后你就可以像这样使用它

objectMapper.addMixIn(TypeXContainer.class, MixIn.class);

Doks:http://wiki.fasterxml.com/JacksonMixInAnnotations

关于java - Jackson 反序列化不受我控制的多态类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41674776/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com