user3129233
user3129233

Reputation: 51

Jackson deserializer with multiple levels of polymorphic type hierachy

It seems that this use case is not supported:

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type")
@JsonSubTypes({
    @JsonSubTypes.Type(value=B1.class, name="b1"),
    @JsonSubTypes.Type(value=B2.class, name="b2")
})
public abstract class A {
    ...
}

public class B1 extends A {
    ...
}

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "subtype")
@JsonSubTypes({
    @JsonSubTypes.Type(value=C1.class, name="c1"),
    @JsonSubTypes.Type(value=C2.class, name="c2")
})
public abstract class B2 extends A {
    ...
}

public class C1 extends B2 {
    ...
}

public class C2 extends B2 {
    ...
}

What I want is to resolve this one: { "type": "b1"; ... } to class B1, and { "type": "b2"; "subtype": "c1"; ... } to class C1 and { "type": "b2"; "subtype": "c2"; ... } to class C2. Any suggestions?

Upvotes: 5

Views: 2701

Answers (1)

yishaiz
yishaiz

Reputation: 2583

For those who need the answer, OP got an answer here:

This is not supported

Upvotes: 1

Related Questions