当前位置: 首页 > 知识库问答 >
问题:

jackson注释中的多态性:@JsonTypeInfo用法

李华茂
2023-03-14

我想知道@jsontypeinfo注释是否可以用于接口。我有一组类,应该序列化和反序列化。

@JsonTypeInfo(use=JsonTypeInfo.Id.NAME, include=As.WRAPPER_OBJECT)
@JsonSubTypes({
    @Type(name="sub1", value=Sub1.class), 
    @Type(name="sub2", value=Sub2.class)})
public interface MyInt{
}

@JsonTypeName("sub1")
public Sub1 implements MyInt{
}

@JsonTypeName("sub2")
public Sub2 implements MyInt{
}

共有1个答案

卜季萌
2023-03-14

@jsonsubtypes.type必须具有如下所示的值和名称,

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

在子类中,使用@jsontypename(“dog”)表示名称。
dogcat将在名为type的属性中设置。

 类似资料:
  • 朋友 Jackson框架提供了基于注释的方法来在序列化过程中发出类型信息。 我不想在我的任何类中使用@JsonTypeInfo注释。 上述注释是否有替代方案。 如果是,请举例说明如何做到这一点。

  • 我有一个类动物和扩展动物的子类猫和狗。我有一个名为Zoo的类,其中有一个变量作为List; i、 e。 } zoo对象将包含可以是Animal对象或Animal子类的动物,下面是zoo类对象的JSON表示示例。 我必须将其转换为java对象,以便列表中的第一个动物被转换为类animal的对象,第二个被转换为类Cat的对象

  • 问题内容: 我有多态类型,并且可以从JSON反序列化为POJO。实际上,我遵循这里的文档。将POJO序列化为JSON时,我得到了不需要的属性,特别是逻辑类型名称。 当Jackson序列化为JSON时,它提供了我不想公开的类型信息。 我可以以某种方式防止这种情况吗?反序列化时我只想忽略。 问题答案: 一个简单的解决方案是将和配置移至,然后仅注册进行反序列化。

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

  • 本文向大家介绍在Java中使用Jackson的@JsonUnwrapped注释的重要性?,包括了在Java中使用Jackson的@JsonUnwrapped注释的重要性?的使用技巧和注意事项,需要的朋友参考一下 @JsonUnwrapped注释可以在序列化和反序列化过程中使用解开值。它有助于呈现组合类的值,就像它属于父类一样。 语法 示例 输出结果

  • Jackson中使用的注释是什么? ======================================== ============================================== 我的理解是,它还保留了被序列化的对象的具体类型以及实际数据。 我不清楚的是反序列化过程中的实际优势/收益是什么。 除了java文档之外,没有任何重要的文档。任何人都可以在这里提供帮助或提供

  • 本文向大家介绍解释PHP中的多态性。,包括了解释PHP中的多态性。的使用技巧和注意事项,需要的朋友参考一下 首先,多态是从希腊语Poly(表示很多)和morphism(表示形式)中获得的。 多态描绘了面向对象编程中的一个示例,在该示例中,具有相似功能的各个类中的方法应具有相似的名称。多态本质上是一种OOP模式,它使具有不同功能的多个类可以执行或共享commonInterface。多态性的用处在于,