我有两个通过 JMS 消息传递和 ActiveMQ 进行通信的 Spring Boot 应用程序。
一个应用程序向另一个应用程序发送一个包含 LocalDateTime 属性的对象。该对象被序列化为 JSON,以便发送到其他应用程序。
我面临的问题是杰克逊在尝试将传入的 json 映射到我的对象时无法反序列化 LocalDateTime 属性。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;
但它们属于杰克逊数据类型 jsr310现在已弃用。
是否有任何方法/替代方法可以在不使用上述注释的情况下反序列化此 LocalDateTime 属性?或者我如何使用推荐的jackson-modules-java8 让它工作?
郎朗坤
qq_花开花谢_0
慕容708150
随时随地看视频慕课网APP
相关分类