DateTimeFormat принимает числа в запросе json вместо формата даты - PullRequest
0 голосов
/ 25 февраля 2019

Мне нужно проверить дату, используя аннотации jsr / упругий упор

@Email(regexp = ".+@.+\\..+")
private String email;
@NotNull
@JsonFormat(pattern="yyyy-MM-dd")
private LocalDate dateOfBirth;

Но он принимает запрос ниже json

{ "email": "eerwer@gmail.com","dateOfBirth": 7,}

и обрабатывает дату как 1970-01-07 (добавление 7 дней с 1970 года)

даже ниже аннотации разрешены цифры

 @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")

Как я могу аннулировать этот запрос

Ответы [ 2 ]

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

Закончилась запись моего собственного десериализатора

class LocalDateDeserializer extends StdDeserializer<LocalDate> {

protected LocalDateDeserializer(){
    super(LocalDate.class);
}

@Override
public LocalDate deserialize(JsonParser jp, DeserializationContext ctxt)
        throws IOException, JsonProcessingException {
    return LocalDate.parse(jp.readValueAs(String.class));

}
}
0 голосов
/ 25 февраля 2019

Проверка даты с помощью jsr notationspring rest.

Добавление зависимости

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

Поле сущности, подобное этому.

    @JsonFormat(pattern="yyyy-MM-dd")
    @DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
    private LocalDate expireDate;

Запрос Json, подобный этому.

{
    "expireDate" :"2015-01-01"
}
...