@JsonTypeInfo
アノテーションをインターフェースに使用できるかどうか知りたい。シリアル化および逆シリアル化する必要があるクラスのセットがあります。
これが私がやろうとしていることです。私は2つの実装クラスSub1
をSub2
実装していMyInt
ます。一部のモデルクラスには、実装タイプのインターフェイスリファレンスがあります。多態性に基づいてオブジェクトを逆シリアル化したい
@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{
}
私は以下を得ますJsonMappingException
:
予期しないトークン(END_OBJECT)、予期されるFIELD_NAME:タイプIDを含むJSON文字列が必要です
@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")
、名前を言うために使用します。
値dog
とは、cat
という名前のプロパティに設定されますtype
。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加