java.time.Instant 不会在消费者端呈现

java.time.Instant does not render on the consumer side

提问人:User 提问时间:6/6/2023 最后编辑:AnonymousUser 更新时间:8/7/2023 访问量:125

问:

我正在尝试使用 Kafka 发送一些信息。我有一个类来处理这个任务。该类包括一个名为“timestamp”的私有变量,类型为 Instant。生成时间戳后,它会正确呈现。但是,当我在消费者端收到消息时,时间戳不可读。

它看起来像这样"timestamp": 1685968244.889278400

此外,我还有一个响应类,定义如下:

public class Response<T> {
    private T data;
    private String statusCode;
    private String statusMessage;
    private Instant timestamp;
}

当我将 atribute 转换为 String 时,一切看起来都很好,但我想渲染时间戳如下:
我该怎么做?
timestamp"timestamp": 2023-06-05T15:07:06.497159Z

java 时间戳 spring-kafka java-time java.time.instant

评论

0赞 Anonymous 6/6/2023
这回答了你的问题吗?在 Java 中将 epoch 转换为 ZonedDateTime
0赞 Artem Bilan 6/7/2023
尝试在两端添加此依赖项:.因此,Jackson 将正确地序列化和反序列化 Java 时间对象:learnersbucket.com/examples/java/...com.fasterxml.jackson.datatype:jackson-modules-java8
0赞 User 6/7/2023
@OleV.V.不幸的是,这不是我的答案
0赞 User 6/7/2023
@ArtemBilan此依赖项已包含,但是当我使用该依赖项进行反序列化时,API 失败了。因此,我需要使用JsonDeserializerorg.springframework.kafka.support.serializer.JsonDeserializer
0赞 Artem Bilan 6/7/2023
那么,它是否有效?这依赖于默认情况下执行此操作的 a,包括提到的 .因此,我不确定您的评论。JsonDeserializerJacksonUtils.enhancedObjectMapper()registerWellKnownModulesIfAvailable(objectMapper);com.fasterxml.jackson.datatype.jsr310.JavaTimeModule

答:

2赞 Serdar 6/14/2023 #1

我怀疑来自即时类型。有一次,我遇到了同样的问题,当我用 Joda-Time 的 DateTime 替换 Instant 时,我解决了这个问题。另一种可能的解决方案是,如果您使用的是自定义序列化程序/反序列化程序,也可能发生这种情况。因此,基本上,您可以使用 JsonSerializer/JsonDeserializer。我希望这些信息对你有用

评论

0赞 User 6/15/2023
谢谢,那行得通。我想给你+1,但由于我的名声,我不能
0赞 Serdar 6/16/2023
不用担心。我很高兴对你有所帮助
0赞 Anonymous 8/4/2023
那是什么类型?来自Joda-Time???DateTime