Получите ошибку «Невозможно десериализовать значение типа java.time.LocalDateTime из String» с загрузкой jackson 310 + Spring

Ни одна из строк, которые я использую в JSON, не может быть десериализована в LocalDateTime с помощью Spring Boot и Jackson 310. Я пробовал все следующее:

  • 2017-05-04T11: 28: 56.816
  • 2014-01-01T00: 00: 00
  • 2017-09-29 00:00:00

Но никто не работает. Мой DTO прост, и я пробовал:

@ApiModel
@Validated
public class DateRange implements Serializable
{
    @ApiModelProperty
    @NotNull
    @JsonFormat( shape = JsonFormat.Shape.ANY, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT" )
    protected LocalDateTime start;

    @ApiModelProperty
    @NotNull
    @JsonFormat( shape = JsonFormat.Shape.ANY, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT" )
    protected LocalDateTime end;

    public DateRange()
    {
    }

    public LocalDateTime getStart()
    {
        return start;
    }

    public void setStart(LocalDateTime start)
    {
        this.start = start;
    }

    public LocalDateTime getEnd()
    {
        return end;
    }

    public void setEnd(LocalDateTime end)
    {
        this.end = end;
    }

    @Override
    public boolean equals(Object o)
    {
        if ( this == o )
        {
            return true;
        }
        if ( o == null || getClass() != o.getClass() )
        {
            return false;
        }
        DateRange range = ( DateRange ) o;
        return Objects.equals( start, range.start ) && Objects.equals( end, range.end );
    }

    @Override
    public int hashCode()
    {

        return Objects.hash( start, end );
    }
}

Я отправил JSON:

{
    "start": "2017-09-29 00:00:00",
    "end": "2017-09-29  00:00:00"
}

Я также попробовал все версии различий, опубликованные выше в маркированном списке.

Что я делаю неправильно?

Вы это уже проверили stackoverflow.com/questions/27952472/…?

cool 22.03.2018 01:03

@ круто да. В ответе на этот пост просто говорится, что если вы используете Jackson 310, вам не нужны специальные десериализаторы. У меня нет настраиваемых десериализаторов

Don Rhummy 22.03.2018 02:00
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
1 613
1

Ответы 1

Включите эту зависимость для десериализаторов json:

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

я уже сделал это. Если вы посмотрите мой пост: with Spring Boot and Jackson 310

Don Rhummy 22.03.2018 18:53

Это именно то, что у меня было (за исключением того, что я использую gradle), и это не работает

Don Rhummy 24.03.2018 04:21

Другие вопросы по теме