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

有没有Jackson@JsonTypeInfo注释的替代方案

卢黎明
2023-03-14

朋友

Jackson框架提供了基于注释的方法来在序列化过程中发出类型信息。

我不想在我的任何类中使用@JsonTypeInfo注释。

上述注释是否有替代方案。

如果是,请举例说明如何做到这一点。

共有2个答案

金子平
2023-03-14

几个备选方案:

  • 使用不需要修改值类的混合注释
  • 重写JacksonAnnotationINDESPORTER并实现您自己的逻辑来确定何时以及如何使用等效类型信息。
郏兴贤
2023-03-14

通过使用setAnnotationIntrospector,重写JacksonAnnotationIntrospector并在ObjectMapper中使用您的内省器。下面是您的AnnotationIntrospector的代码片段:

@Override
public TypeResolverBuilder<?> findTypeResolver(MapperConfig<?> config,
        AnnotatedClass ac, JavaType baseType) {
    if (Modifier.isAbstract(baseType.getRawClass().getModifiers())){
        StdTypeResolverBuilder typeResolverBuilder = new StdTypeResolverBuilder();
        typeResolverBuilder.typeProperty("@class");
        typeResolverBuilder.inclusion(As.PROPERTY);
        typeResolverBuilder.init(Id.CLASS, null);
        return typeResolverBuilder;
    }
    return super.findTypeResolver(config, ac, baseType);
}
 类似资料:
  • 我的目标是将jsonObject转换为Class。我只想添加在类中批注的字段。例如:json 对象包含 50 个字段。类有 4 个字段。我只想映射精确的4个字段,而不在类中添加46个加法忽略。 JSON: 类: 用户类没有地址字段。我的目标是排除它,因为它没有注释。

  • 我希望避免在类上使用DynamoDB注释,但仍然能够使用映射器从DynamoDB进行写和读。我使用Java SDK从DynamoDB读写(使用提供的)。 说我有这个 我会像往常一样写信给它 这很好,但我的域对象到处都是特定于DynamoDB的注释。有没有办法让一个类包装域对象(没有任何注释)。在下面的例子中,我将寻找 干杯,谢谢

  • 问题内容: 如果我们使用 代替 如果我们使用不带注释的日期列属性,会有任何副作用吗? 问题答案: 我设法找到的只有一部分文档: 在纯Java API中, 未定义时间 的 时间精度 。处理时态数据时,您可能需要描述数据库中的预期精度。时间数据可以具有DATE,TIME或TIMESTAMP精度(即实际日期,仅时间或两者兼有)。使用@Temporal批注进行微调。 从2.2.2.1开始。声明基本属性映射

  • 创建类的首选方法是什么 不可变 可以使用Jackson进行序列化/反序列化 可读性强,样板文件水平低 最好是,我希望这样的东西能起作用: 然后将所有字段设置为。然而,这甚至不能编译(我不知道为什么)。使用 将编译,但仅生成

  • 问题内容: 我对Java 5注释有点陌生,我很好奇这两种方法是否可行: 此注释将为您生成一个简单的getter和setter。 该注解表明变量是粗野,空,这样你就不必每次都写样板代码。 这些都可以吗?如果可能的话,它们似乎是我要为其编写注释的第一件事。由于我在阅读文档时对这些内容了解不多,因此我假设注释并不是真正的含义。这里的任何方向将不胜感激。 问题答案: 注释处理发生在抽象语法树上。这是解析器

  • 我对AOP相当陌生。我正在尝试使用AspectJ在没有Spring的maven项目中创建注释。然而,我试图使用@方面调用的方法没有被调用。 这就是我的pom看起来的样子: 注释如下所示: 我为我的注释创建了一个注释处理器: } 我在这次通话中称之为: 我创建了一个aop。xml文件,并将其放置在与pom相同的文件夹中。xml。 当我调用createPurchase方法时,它在没有首先调用@Befo