У меня есть два приложения Spring Boot, которые общаются через JMS Messaging и ActiveMQ.
Одно приложение отправляет другому приложение объект, который содержит свойство LocalDateTime.Этот объект сериализуется в JSON для отправки в другое приложение.
Проблема, с которой я сталкиваюсь, заключается в том, что Джексон не может десериализовать свойство LocalDateTime, когда пытается сопоставить входящий json с моим объектом.Свойство LocalDateTime имеет следующий формат, когда оно прибывает в «приложение слушателя»:
"lastSeen":{
"nano":0,
"year":2019,
"monthValue":4,
"dayOfMonth":8,
"hour":15,
"minute":6,
"second":0,
"month":"APRIL",
"dayOfWeek":"MONDAY",
"dayOfYear":98,
"chronology":{
"id":"ISO",
"calendarType":"iso8601"
}
}
Исключение, которое я получаю, следующее:
org.springframework.jms.support.converter.MessageConversionException: Failed to convert JSON message content; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of java.time.LocalDateTime
Я смог временно решить эту проблему, используя следующие аннотации:
@JsonSerialize(as = LocalDateTimeSerializer.class)
@JsonDeserialize(using = LocalDateTimeDeserializer.class, as = LocalDateTime.class)
private LocalDateTime lastSeen;
, но они принадлежат тип данных jackson jsr310 , который теперь УСТАРЕЛ .
Есть ли способ / альтернатива десериализации этого свойства LocalDateTime без использования вышеупомянутых аннотаций?Или как заставить это работать, используя рекомендованный jackson-modules-java8 ?