Jackson deserializer with multiple levels of polymorphic type hierachy

Viewed 2103

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?

1 Answers
Related