How can I get Jackson to serialize the type using the child interface (Cat below) instead of the subclass (Lion)?
Parent interface Animal
@JsonTypeInfo(
    use = JsonTypeInfo.Id.NAME,
    include = JsonTypeInfo.As.PROPERTY,
    property = "type"
)
@JsonSubTypes({
    @JsonSubTypes.Type(Cat.class),
    @JsonSubTypes.Type(Dog.class)
})
public interface Animal {
  String getType();
}
Child interface Cat
@JsonDeserialize(
    as = Lion.class
)
public interface Cat extends Animal {
    String getType();
}
Subclass Lion
public class Lion implements Cat {
    @JsonProperty("type")
    private String type = null;
    @JsonProperty("type")
    public String getType() {
        return this.type;
    }
}
Test case
Cat cat = new Lion();
ObjectMapper mapper = new ObjectMapper();
System.out.println(mapper.writeValueAsString(cat));
The current output is {"type": "Lion"}
The desired output is {"type":"Cat"}