Джексон установил глобальный формат даты для всех полей даты - PullRequest
2 голосов
/ 04 марта 2020

Я работаю над проектом non spring boot .

Существует множество объектов данных, и становится неудобно комментировать все поля даты с помощью JsonFormat.

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = JacksonSerialiser.DATE_FORMAT)
private Date someDate;

Я знаю, что могу установить формат даты непосредственно в ObjectMapper

SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DATE_FORMAT);
OBJECT_MAPPER.setDateFormat(simpleDateFormat);

Это работает, если вся сериализация / десериализация выполняется напрямую с помощью сопоставителя объектов.

Вы можете реализовать CustomDateSerializer с помощью расширяя StdSerializer<Date>, но опять же, чтобы применить формат, вам нужно указать это на уровне поля следующим образом:

@JsonSerialize(using = CustomDateSerializer.class)
public Date someDate;

С пружинной загрузкой есть свойство, которое вы можете использовать:

spring.jackson.date-format=yyyy-MM-dd HH:mm:ss

Было бы здорово, если бы я мог установить такое свойство без пружины.

1 Ответ

0 голосов
/ 04 марта 2020

Один из вариантов - реализовать собственный Jackson2ObjectMapperBuilderCustomizer и представить его в виде компонента. Затем вы можете поместить туда свои настройки преобразования даты с помощью специального сериализатора и десериализатора. Тогда объект сопоставления по умолчанию будет иметь ваши настройки, и все последующие потоки будут автоматически наследоваться от него.

Соответствующий пример Как настроить Джексона в Spring Boot 1.4

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