Micronaut 4中LocalDateTime反序列化失败问题求助
解决Micronaut 4中LocalDateTime反序列化失败问题
问题根源
Micronaut 4引入了全新的io.micronaut.serde序列化/反序列化模块,替代了Micronaut 3中基于Jackson的默认实现。该模块不兼容Jackson的@JsonFormat注解,因此你之前在Micronaut 3中正常工作的代码升级后会出现解析错误。
解决方案
将Jackson的@JsonFormat替换为Micronaut Serde提供的@Format注解即可解决问题:
修改CheckDto类
import io.micronaut.serde.annotation.Format; import io.micronaut.serde.annotation.Serdeable; import jakarta.validation.constraints.NotNull; import lombok.Data; import java.time.LocalDateTime; @Data @Serdeable public class CheckDto { ... @NotNull @Format(pattern = "yyyy-MM-dd HH:mm") private LocalDateTime startTime; }
验证逻辑
保持你的测试类代码不变,重新运行即可正常解析"2023-09-28 17:00"格式的时间字符串。
补充说明
如果需要保留Jackson相关注解的兼容性,可以在项目中引入micronaut-jackson-serde依赖,让Micronaut Serde复用Jackson的注解处理逻辑,但官方推荐优先使用Micronaut Serde原生注解以获得更好的性能和兼容性。
内容的提问来源于stack exchange,提问作者rich
相关产品推荐
相关产品推荐

