Как построить ObjectMapper, который игнорирует поле JsonTypeInfo?

У меня есть некоторые сгенерированные Swagger классы, которые снабжены аннотациями com.fasterxml.jackson для сериализации и десериализации. Swagger добавил аннотации Джексона в суперкласс, так что при десериализации может быть создан правильный тип объекта:

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "entry-type", visible = true )

Обратите внимание visible = true, что является неудачным (и, вероятно, ненужным), но я застрял с ним, так как это сгенерированный класс, и я не хочу удалять его каждый раз, когда я восстанавливаюсь.

У меня есть модульные тесты, которые создают new ObjectMapper() проверить десериализацию из некоторых текстовых файлов JSON. Проблема возникает из-за visible = true означает, что свойство подается в десериализатор, и я получаю

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "entry-type"
(class com.mycompany.MySubclass), not marked as ignorable (one known property: "my-valid-property"])

Обратите внимание, что это после того, как он успешно создал экземпляр MySubclass, предположительно с использованием поля type-info. Я полагаю, что Swagger в своей ObjectMapper делает некое волшебство, чтобы предотвратить возникновение этой ошибки в ходе обычной десериализации объекта в классе сервера или клиента. Однако я не смог его найти.

Поэтому мой вопрос заключается в том, что если правильно настроить ObjectMapper() в моем тесте, чтобы игнорировать это поле, это правильный путь, как мне это сделать?

0 ответов

Другие вопросы по тегам