Строгий формат даты с использованием Jackson и Kotlin

#kotlin #jackson #retrofit #quarkus

#kotlin #джексон #модернизация #quarkus

Вопрос:

Я использую Jackson, Kotlin и Quarkus, и мой object mapper регистрирует Java Time Module, модуль Kotlin и функцию сериализации, даты записи в качестве временных меток отключены

У меня есть класс данных, который представляет тело моего запроса, он содержит поле LocalDate с именем CreationDate по умолчанию формат, который я получаю, — гггг-мм-дд. Поскольку вводимая здесь дата привыкает к выполнению сетевого вызова, я хочу изменить формат на ММ / дд / гггг, чтобы облегчить это

Какой наилучший дизайн, которому необходимо следовать 1.) Получить дату в формате ММ / дд / ГГГГ и отправить ее вперед? Если да, то как я могу определить формат по умолчанию для моей локальной даты или 2.) Получите локальный формат даты по умолчанию от клиента и позже проанализируйте его в ММ / дд / гггг

Главное, с чем у меня возникли проблемы, это определить формат по умолчанию для моего поля даты

класс данных (значение CreateDate: LocalDate, значение AccountId: Int) // это мой класс данных для запроса ввода

Комментарии:

1. Добавление @JsonFormat(шаблон = «ММ / дд / гггг»)@JsonDeserialize(с использованием= LocalDateDeserializer::class) в поле даты моего создания решило эту проблему, но по-прежнему открытый api отображает значение по умолчанию как гггг-мм-дд

Ответ №1:

ISO 8601

Формат по умолчанию, который вы получаете, гггг-мм-дд, является ISO 8601 и является рекомендуемым форматом для обмена данными.

Почему вам нужен другой формат для вашего сетевого вызова, я не знаю. Самое лучшее было бы, если бы вы могли изменить этот сетевой вызов, чтобы он также принимал формат ISO 8601. Ни при каких обстоятельствах вы не должны позволять этому пользовательскому формату загрязнять JSON, который вы передаете в своем запросе. Поэтому вторым лучшим вариантом является получение формата даты по умолчанию от клиента и форматирование его только MM/dd/yyyy для сетевого вызова, где требуется этот формат.

Ссылка: ISO 8601 — Википедия