Мне нужно определить JsonFormat для ZonedDateTime, в котором время определено в сообщении xml.
Я добавил кувшин Джексона в формат ZonedDateTime (com.fasterxml.jackson.datatype.jsr310.JavaTimeModule).
Добавлен JavaTimeModule следующим образом:
XmlMapper xmlMapper = new XmlMapper();
xmlMapper.registerModule(new JavaTimeModule());
xmlMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
Проблема в том, что он не может правильно отформатировать дату и время.Ошибка:
com.fasterxml.jackson.databind.exc.InvalidFormatException: Невозможно десериализовать значение типа java.time.ZonedDateTime
из строки «2019 3 4 14 44 20 -5»: текст «2019 34 14 44 20 -5 'не удалось проанализировать по индексу 18
Вот как я определяю временную диаграмму:
@JsonFormat(pattern = "yyyy M e k m s X")
private ZonedDateTime openDtGmt;
Как можно сопоставить схему зоны, когдав строке есть минус?
ОБНОВЛЕНИЕ Я понимаю, что дата не соответствует соглашениям.Но это исходит из устаревшей системы и не может быть изменено.Нам нужно определить шаблон даты / времени, который будет следующим: год из четырех цифр;все оставшиеся цифры НЕ имеют начальных нулей;затем часовой пояс без начальных нулей и знака перед цифрой.Также часовой пояс - время по Гринвичу.Формат часового пояса - UTC.
Мы заменили XmlMapper на ObjectMapper.Это, кажется, помогает нам преодолеть ошибку формата даты / времени, но в XML есть пустой тег, в котором он терпит неудачу.Если мы можем обойти ошибку пустого тега, мы можем проанализировать дату / время с помощью нашего собственного метода.
ОБНОВЛЕНИЕ После дополнительного тестирования кажется, что ошибка, которую мы получаем при использованииObjectMapper имеет отношение к пустому тегу.Кажется, что строка XML слишком длинная.Это ошибки при длине 1000 символов.