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

无法构造-Jackson的实例

郑浩博
2023-03-14

我正在使用Jackson,我遇到了问题,当我尝试反序列化一个对象时,我得到了以下错误:

com.fasterxml.jackson.databind.JsonMappingException: 
    Can not construct instance of net.MyAbstractClass, 
    problem: abstract types either need to be mapped to concrete types, 
        have custom deserializer, or be instantiated with additional type information

我在属性上有问题:

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.WRAPPER_OBJECT, property = "@id")
@JsonSubTypes({ @JsonSubTypes.Type(value = MyAbstractClass.class, name = "MyAbstractClass") })
@ManyToOne
private MyAbstractClass object;

有人能帮我吗?

共有3个答案

徐瑞
2023-03-14

我仅使用龙目的数据和构建器注释就出现了这个问题,我将其替换为:

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder

它解决了我的问题。

璩俊雅
2023-03-14

反序列化时需要使用具体类,而不是抽象类。如果抽象类有几个实现,那么在这种情况下,您可以按如下方式使用它-

  @JsonTypeInfo( use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
    @JsonSubTypes({ 
      @Type(value = Bike.class, name = "bike"), 
      @Type(value = Auto.class, name = "auto"), 
      @Type(value = Car.class, name = "car")
    })
    public abstract class Vehicle {
        // fields, constructors, getters, setters
    }
戎亦
2023-03-14

您也不能实例化抽象类。您应该向Jackson提供关于如何用具体类型实例化MyAbstractClass的信息。

请参阅stackoverflow的答案:Jackson JSON库:如何实例化包含抽象字段的类

也许还会看到Jackson多态反序列化

 类似资料:
  • 使用Jersey Client2.28,我试图接收一个包含以下数据的DTO: 当收到它时,我得到以下错误: 我知道我应该能够在没有大量自定义序列化程序或适配器的情况下检索回此内容。在谷歌上,似乎还有其他密切相关的问题,但没有一个解决我的问题: 用于检索数据的代码: 更新:添加的Dto类:

  • //接口 我从这个问题中读到:不能构造-Jackson的实例,但似乎没有帮助,因为我有太多的类从接口实现,不仅仅是一次。

  • 问题内容: 我正在尝试从Oracle网站[fxml教程](http://docs.oracle.com/javase/8/javafx/get-started- tutorial/fxml_tutorial.htm )上的JavaFX教程。 这是我不断得到的例外。该应用程序未显示在屏幕上。我从另一个堆栈溢出答案中完成了非args Main()构造函数,但没有解决。 问题答案: 缺少初始关键字。 也

  • 问题内容: 我正在使用Jackson,但遇到问题,当我尝试反序列化对象时,出现以下错误: 我在属性中遇到问题: 有人可以帮我吗? 问题答案: 您不能实例化一个抽象类,杰克逊也不能。您应该为Jackson提供有关如何使用具体类型实例化MyAbstractClass的信息。

  • 我有一个以下类: 当我尝试转换JSON时 对于这个类实例,我得到以下异常: 获取原因:com . faster XML . Jackson . databind . jsonmappingexception:无法构造com . medianet . rtb . mogli . commons . dto . ad exchange . floor price data的实例:没有字符串参数构造函数

  • 我正在尝试从gson迁移到jackson。这很令人沮丧,jackson在序列化方面做得更好(gson会因为各种原因阻塞jackson序列化的类而没有抱怨)然而,gson更擅长反序列化。 无法构造组织的实例。javautil。果心csv。SqlCsvExporterJson(尽管至少存在一个创建者):没有从字符串值反序列化的字符串参数构造函数/工厂方法。 我已经将其简化为一个简单的bean,我将其序