Ошибка сериализации Джексона с сумасшедшей датой - PullRequest
1 голос
/ 11 марта 2019

Мы сталкиваемся со странным поведением при сериализации дат с Джексоном. Это происходит очень редко.

В одном примере мы отправляем запрос POST с сериализованной датой в формате:

public static String createUTCdateString() {
    //Time in GMT
    SimpleDateFormat simpleDateFormatUTC = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
    simpleDateFormatUTC.setTimeZone(TimeZone.getTimeZone("UTC"));
    return simpleDateFormatUTC.format(new Date());
}

Мы сделали 2 сообщения с разницей в 2 мс, в журналах я вижу, что даты сериализуются как:

"2019-02-25T08:02:47.950Z"
"2019-02-25T08:02:47.952Z"

при получении дата десериализуется в DTO с неверной датой. 2-е событие имеет дату 4701 вместо 2019.

date=Mon Feb 25 08:02:47 UTC 2019, 
date=Mon Feb 25 08:02:47 UTC 4701,

Поле в DTO выглядит следующим образом:

@NotNull
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
    private Date date;

Почему это случилось?

Странно, я не смог найти ничего, связанного с этим. Любая помощь приветствуется.

РЕДАКТИРОВАТЬ:

Компонент сериализации имеет Vertx 3.5.1, используя Jackson 2.9.3, очевидно. https://github.com/vert-x3/wiki/wiki/3.5.1-Release-Notes

Компонент десериализации - Spring Boot с использованием Jackson 2.8.x enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...