Java Джексон, как десериализовать в Дата - PullRequest
0 голосов
/ 25 апреля 2020

Я использую Jackson для десериализации даты в этом атрибуте:

private Date createDate; 

Часть полезной нагрузки:

"createdDate": "1979-12-05T08:00Z",

Получение этой ошибки:

Невозможно десериализовать значение типа java .util.Date из строки "1979-12-05T08: 00Z": недопустимое представление (ошибка: не удалось проанализировать значение даты '1979-12-05T08: 00Z' : Невозможно проанализировать дату "1979-12-05T08: 00.000Z": хотя кажется, что она соответствует формату 'гггг-мм-дд'т'хч: мм: сс.SSS'Z' ', синтаксический анализ не выполняется

Пока я пытался включить эту зависимость:

<dependency>
  <groupId>com.fasterxml.jackson.datatype</groupId>
  <artifactId>jackson-datatype-jsr310</artifactId>
</dependency>

, а также:

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-ddTHH:mmZ")
private Date createDate; 

, но она не работала.

1 Ответ

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

JsonFormat аннотация должна работать, вам нужно только исправить свой шаблон на:

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm'Z'")
private Date createDate;

Кроме того, вы должны установить часовой пояс для ObjectMapper объекта:

ObjectMapper mapper = new ObjectMapper();
mapper.setTimeZone(TimeZone.getTimeZone("GMT"));

Взгляните на:

...