[SPRING] Jackson 날짜 직렬화 - "유효하지 않은"날짜
SPRINGJackson 날짜 직렬화 - "유효하지 않은"날짜
JSON 요청 / 응답을 직렬화 / 역 직렬화하는 Spring Boot를 사용하고 있습니다. 내가 피하고 싶습니다 ISO 형식으로 날짜를 deserialize하려고하면 행동을 건너 왔습니다.
유효하지 않은 달 또는 달의 달을 사용할 때 Jackson은 날짜에 일 / 월을 추가하여 처리합니다.
예를 들어
{
"date": "2018-02-40T15:00:00+01:00"
}
Mon 3 월 12 일 15:00:00 CET 2018로 직렬화 해제됩니다.
또는
{
"date": "2018-14-20T15:00:00+01:00"
}
2 월 20 일 수요일 15:00:00 CET 2019
어떻게 든 유효성 검사를 시행 할 수있는 방법이 있습니까? 직렬화 및 역 직렬화 기능 목록을보고 있었지만이 동작에 영향을 줄 수있는 항목을 찾을 수 없었습니다.
이전 Java Date API - java.util.Date를 사용하고 있습니다.
해결법
-
==============================
1.당신의 대답은 나에게 올바른 방향을 알려주었습니다. Jackson은 2.9+ 이후 @JsonFormat 주석을 사용하여 관대 구성을 지원합니다.
당신의 대답은 나에게 올바른 방향을 알려주었습니다. Jackson은 2.9+ 이후 @JsonFormat 주석을 사용하여 관대 구성을 지원합니다.
@JsonFormat(lenient = OptBoolean.FALSE)
그래서 스프링 부트 부모 POM을 사용하면서 POM의 jackson.version 속성 값을 무시해야했습니다.
<jackson.version>2.9.4</jackson.version>
다시 한 번 감사드립니다!
-
==============================
2.이전 API를 사용하고 있으므로 사용중인 DateFormat과 연결된 캘린더에서 setLenient (false)를 호출하여 엄격 모드를 사용 설정합니다.
이전 API를 사용하고 있으므로 사용중인 DateFormat과 연결된 캘린더에서 setLenient (false)를 호출하여 엄격 모드를 사용 설정합니다.
-
==============================
3.
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss+01:00"); sdf.setLenient(false); objectMapper.setDateFormat(sdf);
비슷한 질문 : Jackson ObjectMapper : 날짜 직렬화 및 직렬화 해제 문제
-
==============================
4.스프링 부트를 사용하여 언급 한 것처럼, ObjectMapper에 대한 구성을 만들 수 있습니다.
스프링 부트를 사용하여 언급 한 것처럼, ObjectMapper에 대한 구성을 만들 수 있습니다.
@Configuration public class ObjectMapperConfig { @Bean public ObjectMapper objectMapper(){ ObjectMapper mapper = new ObjectMapper(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss+01:00"); simpleDateFormat.setLenient(false); mapper.setDateFormat(simpleDateFormat); return mapper; } }
그리고 매번 ObjectMapper를 삽입하기 만하면됩니다.
@Autowired private ObjectMapper mapper;
from https://stackoverflow.com/questions/48934700/jackson-date-deserialization-invalid-day-of-month by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring MVC에서 빈 문자열 대신에 형태 값을 NULL로 설정 (0) | 2019.05.28 |
---|---|
[SPRING] Spring MVC에서 빈 폼 입력을 null 문자열로 바꾸는 쉬운 방법이 있습니까? (0) | 2019.05.28 |
[SPRING] Vaadin : 위젯 세트가로드되지 않습니다. (0) | 2019.05.27 |
[SPRING] 배치에서 내 데이터 소스를 사용하지 않는 스프링 배치 프로젝트를 만들고 싶습니다. (0) | 2019.05.27 |
[SPRING] Spring 배치를 사용한 트랜잭션 관리 (0) | 2019.05.27 |