Jackson, не распознающий @JsonCreator аннотация

Я в настоящее время использую Jackson 1.4.2 и делаю попытку десериализации code значения (уникальные идентификаторы для получения информации о типе), которые передаются от нашего UI назад к контроллерам Java (Сервлеты).

Существует несколько типов (например. ABCType, XYZType, и т.д.), который все расширяют от AbstractType, но каждый конкретный тип имеет статический метод фабрики, который берет в качестве единственного параметра, уникального идентификатора, и возвращает текстовый объект (имя, связанные типы, описание, допустимые акронимы, и т.д.) представленный тем идентификатором. Статический метод в каждом конкретном типе (например. XYZType) аннотируется @JsonCreator:

@JsonCreator
public static XYZType getInstance(String code) {
    .....
}

Проблема, которую я вижу, хотя исключение, выданное картопостроителем Jackson, пытающимся десериализовывать json к тем типам:

Вызванный: org.codehaus.jackson.map. JsonMappingException: Никакой конструктор по умолчанию не найден для типа [простой тип, класс com.company.type. XYZtype]: не может инстанцировать от объекта Json.

Что я пропускаю здесь @JsonCreator аннотация к статическим методам фабрики (или это, чтобы сделать с Jackson 1.4.2 борьбы с конкретными типами, расширяющимися от AbstractType?)?

10
задан Hunsu 5 July 2014 в 12:13
поделиться

1 ответ

Проблема в том, что Джексон видит только заявленный базовый тип и не знает, где искать подтипы. Поскольку полная обработка полиморфных типов была добавлена ​​в 1.5, что вам нужно сделать с 1.4, так это добавить фабричный метод в базовый класс и методы диспетчеризации оттуда.

5
ответ дан 3 December 2019 в 20:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: