Как пропустить использование @JsonCreator для Enums во время десериализации Json в объект Java?

Класс Enum, ColorName создается с использованием jsonschema2pojo из json-файла ColorName, поэтому по умолчанию класс Enum имеет метод fromValue, аннотированный с помощью @JsonCreator.

@JsonCreator
public static ColorName fromValue(String value) {
    ColorName constant = constants.get(value);
    if (constant == null) {
        throw new IllegalArgumentException(value);
    } else {
        return constant;
    }
}

Если этот класс используется для десериализации строки json в объект Java и если в json передано новое / неправильное значение Enum, то десериализация завершается неудачно с IllegalArgumentException(). При попытке избежать этой ошибки, используя ниже, это не сработало

ObjectMapper om = новый ObjectMapper (); om.configure (DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL, истина);

Проблема, похоже, в том, что @JsonCreator всегда уважают. Есть ли способ указать десериализатору пропустить это или игнорировать неизвестное значение перечисления?


person skpraveen    schedule 06.05.2017    source источник


Ответы (1)


Это было исправлено изменением самой библиотеки Джексона, начиная с https://github.com/FasterXML/jackson-databind/pull/1642/files

Согласно https://github.com/FasterXML/jackson-databind/pull/1642 он был перенесен на Jackson 2.8.9, поэтому попробуйте выполнить обновление до него.

person AlexB    schedule 13.08.2019