Формат даты в json-выходе с использованием spring загрузки
Я работаю над загрузкой spring для создания приложения для отдыха. И у меня есть DTO, как показано ниже:
public class Subject {
private String uid;
private String number;
private String initials;
private Date dateOfBirth;
И я использую Spring -Hateos, а тип повторного ввода моего контроллера - ResponseEntity → . Мне нужна дата, которая будет отображаться в формате "yyyy-mm-dd". И я поражен этим. Пожалуйста, помогите мне, как этого добиться. Спасибо заранее.
Ответы
Ответ 1
Если у вас есть интеграция Джексона с вашим приложением для сериализации формата bean в формате JSON athn, вы можете использовать анонс Jackson @JsonFormat, чтобы отформатировать дату до указанного формата.
В вашем случае, если вам нужна дата в формате yyyy-mm-dd
, вам нужно указать @jsonFormat
над полем, в котором вы хотите применить этот формат.
Пример:
public class Subject {
private String uid;
private String number;
private String initials;
@JsonFormat(pattern="yyyy-MM-dd")
private Date dateOfBirth;
//Other Code
}
Из Документов:
аннотация, используемая для настройки сведений о том, как значения свойств должны быть сериализованы.
Подробнее Справочный документ
Пусть это поможет вам.
Ответ 2
Вы, скорее всего, означаете, что "yyyy-MM-dd" small last 'm' будет означать раздел минут.
Вы должны сделать две вещи
-
добавить spring.jackson.serialization.write-dates-as-timestamps:false
в application.properties
, это отключит преобразование дат в метку времени и вместо этого использует формат, совместимый с ISO-8601
-
Вы можете настроить формат, аннотируя метод getter вашего свойства dateOfBirth
с помощью @JsonFormat(pattern="yyyy-MM-dd")
Ответ 3
Если вы хотите изменить формат для всех дат, вы можете добавить настраиватель. Ниже приведен пример bean, который преобразует даты в ISO 8601:
@Bean
public Jackson2ObjectMapperBuilderCustomizer jsonCustomizer() {
return new Jackson2ObjectMapperBuilderCustomizer() {
@Override
public void customize(Jackson2ObjectMapperBuilder builder) {
builder.dateFormat(new ISO8601DateFormat());
}
};
}
Ответ 4
Начиная с Spring Boot version 1.2.0.RELEASE есть свойство, которое вы можете добавить в свой application.properties
, чтобы установить формат даты по умолчанию для всех ваших классов spring.jackson.date-format
.
В вашем примере формата даты вы добавили бы эту строку в свой файл свойств:
spring.jackson.date-format=yyyy-mm-dd
Ссылка https://docs.spring.io/spring-boot/docs/1.2.0.RELEASE/reference/html/common-application-properties.html