1. ホーム
  2. java

[解決済み] のインスタンスを作成できない - Jackson

2023-08-07 08:42:30

質問

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;

誰か助けてくれませんか?

どのように解決するのですか?

抽象クラスをインスタンス化することはできません、Jacksonも同様です。 MyAbstractClassを具象型でインスタンス化する方法について、Jacksonに情報を提供する必要があります。

stackoverflowのこの回答を参照してください。 Jackson JSON ライブラリ: 抽象フィールドを含むクラスをインスタンス化する方法

また、おそらく Jackson ポリモーフィックデシリアライゼーション