将 Java 记录与 JSON-B + Jax-RS 结合使用

问题描述

我的项目使用 JSON-B 和 JAX-RS。我使用的框架是 Quarkus 并使用 Java 11。我尝试升级到 Java 16 并使用 Java Records。看来 JSON-B 和 Records 不能很好地工作。

我尝试过@JsonbCreator。但是这个注解只适用于单个构造函数

我还尝试使用 Apache Johnzon,如下所示 (https://adambien.blog/roller/abien/entry/java_14_java_record_json)。但是 Quarkus Resteasy 没有 Johnzon 绑定。

是否有允许我切换到 Java 记录的解决方案?

谢谢

解决方法

Quarkus 使用 Eclipse Yasson 作为其 JSON-B 实现,目前 Yasson 不支持 Records。 不过,这可能很快就会改变,请参阅 this 问题。

如果您愿意放弃 JSON-B,您可以将 Jackson 与 Quarkus 一起使用并获得 Records 支持,因为 Jackson 自版本 2.12 起就支持它们