Quarkus实战:专为Kubernetes而优化的Java解决方案
上QQ阅读APP看书,第一时间看更新

5.1 对JSON进行编组和解组

问题

如何把JSON文档编组到Java对象,把Java对象解组到JSON文档?

解决方案

使用JSON-B规范或Jackson项目。

当创建REST API时,你通常使用JSON数据格式进行信息传递。到目前为止,你已经看到了只返回简单的纯文本响应的例子。在本节中,你将学习如何开始使用JSON作为请求主体和响应的数据格式。

首先,在pom.xml中添加JSON-B扩展。打开一个终端窗口,在项目的根目录运行以下命令:

这可以快速将io.quarkus:quarkus-resteasy-jsonb添加到构建工具中。

在Gradle中,可以使用./gradlew addExtension --extensions= "quarkus-resteasy-jsonb"来添加扩展。

下一步是创建一个名为Developer的类,该类将在端点中被编程和解组。创建一个名为org.acme.quickstart.Developer.java的新类:

最后,你可以创建一个REST API来实现developer类的操作。创建一个名为org.acme.quickstart.DeveloperResource.java的新类:

打开一个新的终端窗口,启动Quarkus应用程序,尝试发送POST和GET方法的请求:

注意,每个Java字段都直接映射到JSON字段。如果你想改变这一点,可以使用javax.json.bind.annotation.JsonbProperty注解来设置不同的映射名:

讨论

除了使用JSON-B,你也可以使用Jackson项目实现JSON文档与Java对象的编组和解组。你需要添加Jackson-Extension才能将其作为JSON解决方案使用:

默认情况下,它提供了一个com.fasterxml.jackson.databind.ObjectMapper,但你也可以使用CDI的方式提供一个自定义的ObjectMapper:

另见

你可以在以下网页中了解关于JSON-B和Jackson的更多信息:

·Jakarta JSON Binding (JSON-B)(http://json-b.net

·Jackson Project Home @GitHub(https://oreil.ly/U3hwH