Измените application.yaml в Springboot, чтобы возвращать даты как длинные, а не как временные метки - PullRequest
0 голосов
/ 02 апреля 2020

У нас есть проект Springboot, класс нашего производственного приложения содержит следующую аннотацию: @ EnableWeb Mvc (), поэтому при вызове конечной точки возвращается следующее. Обратите внимание, что даты возвращаются в виде значений long .

{
 "expirationDate": 1597291200000,
 "dateOfBirth": 271828800000 
}

Однако в нашей ветке разработки в классе приложения мы удалили эту аннотацию и полученный ниже ответ после вызова той же конечной точки. Обратите внимание, что теперь даты возвращаются как отметок времени . Как мы можем изменить наш application.yaml, чтобы получать даты без аннотации @ EnableWeb Mvc (). Для нас лучшее решение было бы в application.yaml, но любые другие предложения приветствуются.

{
  "expirationDate": "2020-08-13T04:00:00.000+0000",
  "dateOfBirth": "1978-08-13T04:00:00.000+0000"
}

1 Ответ

1 голос
/ 02 апреля 2020

Это возможно с помощью аннотации JsonFormat, предоставленной Джексоном. В своем соответствующем классе сущностей, который вы возвращаете в качестве ответа, аннотируйте поля с помощью JsonFormat и предоставьте аннотацию формы Shape.NUMBER.

        @JsonFormat(shape = JsonFormat.Shape.NUMBER)
        final ZonedDateTime expirationDate;

        @JsonFormat(shape = JsonFormat.Shape.NUMBER)
        final ZonedDateTime dateOfBirth;

Этого также можно достичь глобально через файл свойств.

Свойства

spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS = true

YAML

spring:
  jackson:
    serialization:
      WRITE_DATES_AS_TIMESTAMPS: true
...