カスタムデシリアライザを作成することをお勧めします。あなたはここでその上の情報を見つけることができます:http://www.baeldung.com/jackson-deserialization
公式ドキュメントはここにある:http://wiki.fasterxml.com/JacksonHowToCustomDeserializers
代替:
3つのオブジェクトは、共通のインタフェースを実装することにより、相互に関連している場合は、あなたがこれを行うことができます:
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "@class")
public interface MyObjectInterface {}
しかし、その後、あなたは@class
プロパティを含めるようにJSONを調整する必要があります。あなたはそれが可能かどうかを述べなかった。
2オルタナティブ:
すでにtype
性質を持っている場合は、あなたがこれを行うことができます:
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXTERNAL_PROPERTY, property = "type")
@JsonSubTypes(
{@JsonSubTypes.Type(value = MyObject1.class, name = "OBJECT_1"),
@JsonSubTypes.Type(value = MyObject2.class, name = "OBJECT_2"),
@JsonSubTypes.Type(value = MyObject3.class, name = "OBJECT_3")}
)
public interface MyObjectInterface {}
を私は匿名オブジェクトの横に 'type'が呼ばれる旗を持って、それがタイプかを決定しますオブジェクトはです。それは助けることができますか? –
はい、私はあなたがそれを行う方法を示す答えを更新しました。 –