Подтвердить что ты не робот

Формат даты в 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". И я поражен этим. Пожалуйста, помогите мне, как этого добиться. Спасибо заранее.

4b9b3361

Ответ 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