当前位置: 首页 > 面试题库 >

如何防止Jackson序列化多态类型的注释属性?

洪彬
2023-03-14
问题内容

我有多态类型,并且可以从JSON反序列化为POJO。实际上,我遵循这里的文档。将POJO序列化为JSON时,我得到了不需要的属性,特别是逻辑类型名称。

import static org.codehaus.jackson.annotate.JsonTypeInfo.*;

@JsonTypeInfo(use=Id.NAME, include=As.PROPERTY, property="type")
@JsonSubTypes({
    @JsonSubTypes.Type(value=Dog.class, name="dog"),
    @JsonSubTypes.Type(value=Cat.class, name="cat")
})    
public class Animal { ... }

public class Dog extends Animal { ... }
public class Cat extends Animal { ... }

当Jackson序列化为JSON时,它提供了我不想公开的类型信息。

{"type":"dog", ... }
{"type":"cat", ... }

我可以以某种方式防止这种情况吗?type反序列化时我只想忽略。


问题答案:

一个简单的解决方案是将@JsonTypeInfo@JsonSubTypes配置移至MixIn,然后仅注册MixIn进行反序列化。

mapper.getDeserializationConfig().addMixInAnnotations(MyClass.class, MyMixIn.class)



 类似资料:
  • 我想使用jackson注释反序列化2级多态子类型。基本上,我想使用json注释和jacksons将以下json转换为xml,如下所示 我想要的最终Xml是 我有以下几门课——主课 它具有抽象子类 MySubItem有具体的子类,比如MySubItemA、MySubItemB和MySubItemC 最后,我们创建一个客户端类,它包含抽象类的对象列表 我尝试为我的项目创建 Mixin 类作为 和for

  • 我看过jackson反序列化@JsonTypeInfo的一个例子,那就是: 我试过了,效果很好。现在的问题是,在示例类中,Cat和Dog是从Animal中引用的,我想避免这种情况。有没有一种方法可以将类型绑定从类动物中移除,并且仍然进行反序列化工作?谢谢

  • 我按照本指南将Micronaut Serialization与Jackson注释一起使用。当我创建一个抽象类和一个类时,我可以使用和来正确序列化类的对象。 但是,当我使用类型的属性序列化的对象但使用运行时类型时,该属性被序列化为。 下面的代码应该解释了我的问题。请注意,我正在使用,当我将其替换为时,它会按预期工作。 有没有一种方法可以使用注释使其工作?

  • 问题内容: 如果我有这样的类结构: 还有另一种反序列化的方法吗?在父类上使用此注释: 我不想强迫我的API的客户包括反序列化一个子类。 杰克逊不是使用,而是提供了一种方法来注释子类并通过唯一属性将其与其他子类区分开来?在上面的示例中,这类似于“如果JSON对象将其反序列化为,如果它将其反序列化为”。 问题答案: 感觉像是应该使用的东西,但是我在文档中进行了选择,可以提供的任何属性似乎都不符合您所描

  • 下面是输出: 我的分级文件中的版本号: