Я использую Spring Boot 1.4 и следующие работы. У меня есть этот @Bean
определенно:Дата сопоставления строк с датами, включая время с Джексоном весной
@Bean
public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
ObjectMapper mapper = new ObjectMapper();
mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd"));
mapper.registerModule(new JodaModule());
return new MappingJackson2HttpMessageConverter(mapper);
}
И у меня есть этот DTO определен:
public class ReportRequest implements Serializable {
private LocalDate startDate;
private LocalDate endDate;
// additional fields and getters/setters omitted
}
Я направляющая эти данные в контроллер с @RequestBody ReportRequest
со следующим JSON в теле запроса:
{
"startDate": "2016-09-01",
"endDate": "2016-09-12"
}
Отлично работает. Однако мне нужно также включить время. Поэтому я изменил все, чтобы выглядеть так:
mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
private LocalDateTime startDate;
private LocalDateTime endDate;
{
"startDate": "2016-09-01 02:00:00",
"endDate": "2016-09-12 23:59:59"
}
Это не работает. Я получаю:
Could not read document: Invalid format: \"2016-09-01 02:00:00\" is malformed at \" 02:00:00\" (through reference chain: com.hightouchinc.dto.ReportRequest[\"startDate\"]); nested exception is com.fasterxml.jackson.databind.JsonMappingException: Invalid format: \"2016-09-01 02:00:00\" is malformed at \" 02:00:00\" (through reference chain: com.hightouchinc.dto.ReportRequest[\"startDate\"])
Обновление: я изменил следующее:
mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"));
А может отправить "2016-09-01T02:00:00"
и она работает. Но удаление T
от обоих продолжает ломаться.
Это хорошая идея, но 'JacksonJodaDateFormat' не принимает строку. Ему нужен DateTimeFormatter, поэтому я пытаюсь определить, как его правильно обернуть. – Gregg
Так оно и есть. Вы можете создать его из строки с помощью 'DateTimeFormat.forPattern (« yyyy-MM-dd HH: mm: ss »);' – jgm
Вы не можете, потому что этот 'DateTimeFormat' из java.text и' JacksonJodaDateFormat' хочет joda time 'DateTimeFormatter', который работает не так. – Gregg