Я использую Джексона для разбора JSON, который я не контролирую. JSON выглядит так:
{
    "status":"0"
    "type":"type1"
    "info": {
       // additional fields
    }
}
Мой класс выглядит следующим образом
public class Response {
    private String status;
    private String type;
    private Info info
}
Подкласс Info, который я использую, зависит от свойства type, поэтому мое сопоставление для информации
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXTERNAL_PROPERTY, property = "type")
@JsonSubTypes(value = {
        @JsonSubTypes.Type(value = Type1Info.class, name = "type1"),
        @JsonSubTypes.Type(value = Type2Info.class, name = "type2") })
public abstract class Info {
    // some fields
}
Насколько я могу судить, это правильный способ использования информации о типе, когда отличительный элемент находится на том же уровне, что и элемент, который должен быть запущен. Но это не работает, я всегда получаю ту же ошибку:
com.fasterxml.jackson.databind.JsonMappingException: Неожиданный токен (END_OBJECT), ожидается FIELD_NAME: отсутствует свойство 'type', которое должно содержат идентификатор типа
Если я изменю EXTERNAL_PROPERTY на PROPERTY, я все равно получаю ту же ошибку. Непонятно ли мое понимание EXTERNAL_PROPERTI?
