@JsonSerializer не работает после миграции с v1 Jackson на 2.4.4, как будто его игнорируют - PullRequest
0 голосов
/ 15 февраля 2019

Я работаю на JBoss 6.1.4 и использовал Jackson V1.После изменения моих зависимостей на эталонную версию 2.4.4 (и изменения всех включений на более быстрые версии xml) все равно, что @JsonSerialize игнорируется.Вместо String (из сериализатора) он возвращает класс как JSON, который должен был быть сериализован.Ведение журнала и System.out внутри сериализатора не отображаются.

Я не внес никаких изменений в код, кроме изменения включений для использования fastxml.

public class HiDateSerializer extends JsonSerializer<HiDate> {

    @Override
    public void serialize(final HiDate value, final JsonGenerator gen, final SerializerProvider sp) throws IOException, JsonProcessingException {
        if (value == null || value.isNull()) {
            gen.writeString("");
        } else {
            gen.writeString(value.fmt());
        }
     }
 }

Затем в своем классе моделей я используюаннотация для всех HiDate атрибутов:

@JsonSerialize(using = HiDateSerializer.class)
private HiDate dob;

Вот моя зависимость:

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${jackson.version}</version>
    </dependency>

Ранее я получал либо пустую строку, либо строку только с датой.Однако теперь я получаю JSON представление всего класса HiDate.Как будто @JsonSerialize больше не соблюдается.

1 Ответ

0 голосов
/ 19 февраля 2019

Полагаю, вы используете значение по умолчанию ResteasyJacksonProvider, которое загружает классы из org.codehaus.*.Вам необходимо зарегистрироваться ResteasyJackson2Provider, который использует классы из com.fasterxml.jackson.* пакетов.

См. Также:

  1. Джексон Jboss EAP6.1.1 аннотации неработает
  2. Глава 21. Поддержка JSON через Джексона
  3. JBoss resteasy - Пользовательский провайдер Джексона
  4. Использование провайдера resteasy-jackson2 вместо провайдера resteasy-jackson
  5. jackson-jaxrs-provider
...