为了使用Java API for JSON Binding (JSON-B),我发现有必要在我的Maven POM中包含以下三个依赖项:
<!-- https://mvnrepository.com/artifact/jakarta.json.bind/jakarta.json.bind-api -->
<dependency>
<groupId>jakarta.json.bind</groupId>
<artifactId>jakarta.json.bind-api</artifactId>
<version>1.0.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.eclipse/yasson -->
<dependency>
<groupId>org.eclipse</groupId>
<artifactId>yasson</artifactId>
<version>1.0.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.glassfish/javax.json -->
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.json</artifactId>
<version>1.1.4</version>
</dependency>
前两个对我来说很有意义。
jakarta.json.bind-api
是JSR 367定义的JSON-B API 。yasson
是该 API 的参考实现,Eclipse Yasson。
javax.json
➥ 但是来自Glassfish的第三个依赖项到底给聚会带来了什么?为什么我的应用程序需要它才能运行?
如果省略,在运行时Jsonb jsonb = JsonbBuilder.create();
,我会收到此错误:
javax.json.JsonException:未找到提供程序 org.glassfish.json.JsonProviderImpl
我很困惑,因为我认为 Yasson是我的 JSON 处理实现。