Разобрать "гггг-ММ-дд'ТХЧ: мм: сс" в LocalDateTime в Котлине с помощью аннотации - PullRequest
0 голосов
/ 15 мая 2018

Я хочу проанализировать строку с шаблоном "yyyy-MM-dd'T'HH: mm: ss" в LocalDateTime с помощью аннотации.

Я попытался проанализировать приведенный ниже код, но он выдает меняошибка.Что я должен сделать для исправления этой ошибки?

Код:

SearchREQ(
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss")
    @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
    var departureDate: LocalDateTime,
)

Ошибка:

Type definition error: [simple type, class java.time.LocalDateTime];
 nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException:
  Cannot construct instance of java.time.LocalDateTime (no Creators,
      like default construct, exist): no String-argument constructor/factory
      method to deserialize from String value ('2018-08-20T06:00:00')
at [Source: (PushbackInputStream); line: 5, column: 22]
  (through reference chain: gtd.connector.model.req.SearchREQ[\"departureDate\"])

Спасибо за ваш ответ

1 Ответ

0 голосов
/ 14 марта 2019

LocalDateTime не имеет String конструкторов.Возможный обходной путь будет следующим:

class SearchREQ(
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss")
    @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
    var departureDate: Date
) {
  val departureDateTime get() =  LocalDateTime.ofInstant(departureDate.toInstant(), TimeZone.getTimeZone("UTC").toZoneId())!!
}

Вы также можете реализовать собственный десериализатор для LocalDateTime.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...