Я использую библиотеку, описанную страницу Jackson Datatype JSR310, но мне все еще трудно заставить ее работать.
Я сконфигурировал следующий bean:
@Bean
@Primary
public ObjectMapper objectMapper() {
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JSR310Module());
return mapper;
}
Когда я вызываю свой REST API, выходной формат даты равен yyyy-MM-dd'T'HH:ss.SSSSSS
, например. 2015-04-11T00:10:38.905847
. Это очень удобно обрабатывает мой код AngularJS.
Когда я хочу отправить что-то в REST API, дата отправляется как yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
, например. 2015-04-09T08:30:00.000Z
Джексон продолжает жаловаться на "Z" в конце. Если я смотрю на LocalDateTimeDeserializer
в документации, он использует DateTimeFormatter.ISO_LOCAL_DATE_TIME
, который кипит до ISO_LOCAL_DATE'T'ISO_LOCAL_TIME
, и он упоминает, что у него нет зоны переопределения.
Итак, я решил, что должен установить DateFormat
в ObjectMapper
, который я создаю:
@Bean
@Primary
public ObjectMapper objectMapper() {
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JSR310Module());
mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"));
return mapper;
}
Но это ничего не делает. Я изменил его на что-то простое, как yyyy-MM-dd
, но сериализованная дата осталась в предыдущем формате, и десериализация тоже не затронута.
Что я делаю неправильно здесь, чтобы заставить это работать? Формат даты в моем JavaScript-коде, насколько я знаю, формат ISO 8601...