002、Spring Boot返回Json数据及数据封装
发布网友
发布时间:2024-12-01 14:19
我来回答
共1个回答
热心网友
时间:2024-12-10 00:56
在项目开发中,接口与接口之间,前后端之间数据的传输都使用 Json 格式。Spring Boot 中,接口返回 Json 格式的数据很简单,在 Controller 中使用 @RestController 注解即可返回 Json 格式的数据。@RestController 注解包含了原来的 @Controller 和 @ResponseBody 注解。默认情况下,使用 @RestController 注解即可将返回的数据结构转换成 Json 格式。Spring Boot 中默认使用的 Json 解析技术框架是 jackson。使用 @RestController 注解可以方便地返回 Json 数据。
Spring Boot 中对依赖都做了很好的封装。我们可以查看 pom.xml 中的 spring-boot-starter-web 依赖,可以看到一个 spring-boot-starter-json 依赖。Spring Boot 的特点之一是不需要人为去引入很多相关的依赖。我们可以再次点进去上面这个 spring-boot-starter-json 依赖,查看其内容。Spring Boot 中默认使用的 json 解析框架是 jackson。
在实际项目中,常用的数据结构无非有类对象、List 对象、Map 对象。默认的 jackson 框架对这三个常用的数据结构转成 json 后的格式如何?我们可以通过测试来验证。在 Controller 类中,我们可以分别返回 User 对象、List 和 Map。然后在浏览器中输入不同的 URL 来测试效果。我们看到,map 中不管是什么数据类型,都可以转成相应的 json 格式。这样就非常方便。
在实际项目中,我们难免会遇到一些 null 值出现。我们转 json 时,是不希望有这些 null 出现的。比如我们期望所有的 null 在转 json 时都变成 "" 这种空字符串。在 Spring Boot 中,我们可以通过配置来实现。我们可以新建一个 jackson 的配置类,修改返回 map 的接口,将几个值改成 null 进行测试。重启项目,再次输入 URL,可以看到 jackson 已经将所有 null 字段转成了空字符串了。
阿里巴巴的 FastJson 也常用于项目中 json 转换的相关工作。jackson 和 fastJson 的区别在于:上手难易程度、高级特性支持、官方文档、Example 支持和处理 json 速度。在扩展上,fastJson 没有 jackson 灵活,从速度或者上手难度来看,fastJson 可以考虑。在项目中使用的是阿里的 fastJson,挺方便的。使用 fastJson 需要导入依赖,版本为 1.2.35。使用 fastJson 时,对 null 的处理和 jackson 有些不同。
为了在返回的 json 中添加一些其他信息,比如返回一些状态码 code 和返回一些 msg 给调用者,我们需要封装一个统一的 json 返回结构。这使得返回的 json 数据信息更加完整。我们定义了一个统一的 json 结构,包括数据、状态码、提示信息,并且可以根据实际业务需求做相应的添加。在 Controller 中,我们可以使用泛型来方便地返回各种数据类型。通过封装,我们不仅将数据通过 json 传给前端或者其他接口,还带上了状态码和提示信息。这在实际项目场景中应用非常广泛。
总结,本节详细分析了 Spring Boot 中 json 数据的返回。从默认的 jackson 框架到阿里巴巴的 fastJson 框架,我们对它们的配置进行了相应的讲解。另外,结合实际项目情况,我们总结了实际项目中使用的 json 封装结构体,加入了状态码和提示信息,使得返回的 json 数据信息更加完整。课程源代码下载地址:[课程源代码下载](链接)。