第五章:配置使用FastJson返回Json视图本章目标创建SpringBoot项目添加依赖项目初尝试运行总结

fastJson是阿里巴巴旗下的一个开源项目之一,顾名思义它专门用来做快速操作Json的序列化与反序列化的组件。它是目前json解析最快的开源组件没有之一!在这之前jaskJson是命名为快速操作json的工具,而当阿里巴巴的fastJson诞生后jaskjson就消声匿迹了,不过目前很多项目还在使用。

本章目标

将fastJson加入到SpringBoot项目内,配置json返回视图使用fastJson解析。

创建SpringBoot项目

看过我前几章的程序猿们都知道,我们通过IntelliJ IDEA工具创建SpringBoot项目,我们本章也不例外,具体创建步骤这里就不多做解释了,最终项目结构如下图1所示:

图1

可以看到我们事先导入了,Web、MySQL、JPA组件,我们把上一章的application.yml配置文件复制到我们的项目对应的目录下,并且修改pom.xml添加Druid的支持。如下图2所示:

图2

注意:图2中的spring-boot-stater-tomcat依赖的scope属性一定要注释掉我们才能在IntelliJ IDEA工具使用SpringBootApplication的形式运行项目! 完成上述配置后我们接下来将fastJson的maven依赖也添加进我们的pom.xml配置文件中。

添加依赖

跟我们上一章很相似,我们需要到maven仓库复制对应的maven依赖xml配置到我们项目的pom.xml中。访问仓库地址:mvnrepository.com/artifact/com.alibaba/fastjson/1.2.31,这里我们使用fastJson最新版本,我们当访问fastJson的列表界面时可以看到阿里巴巴2017年就发布了很多个版本,证明阿里巴巴一直在维护并且升级版本,所以我们可以大胆的放心使用。添加效果图如下图3所示:

图3

添加完成依赖后我们把上一章的实体类、控制器、JPA复制到我们当前项目下,我们就不重复讲解如何创建这些简单的实体类了。如下图4所示:

图4

我们接下来创建一个FastJsonConfiguration配置信息类,添加@Configuration注解让SpringBoot自动加载类内的配置,有一点要注意我们继承了WebMvcConfigurerAdapter这个类,这个类是SpringBoot内部提供专门处理用户自行添加的配置,里面不仅仅包含了修改视图的过滤还有其他很多的方法,包括我们后面章节要讲到的拦截器,过滤器,Cors配置等。 fastJson视图过滤配置详细内容如下图5所示:

图5

上述图5内fastJson配置实体调用setSerializerFeatures方法可以配置多个过滤方式,下面我们来介绍下常用的SerializerFeatures配置。

FastJson SerializerFeatures

WriteNullListAsEmpty  :List字段如果为null,输出为[],而非null WriteNullStringAsEmpty : 字符类型字段如果为null,输出为"",而非null DisableCircularReferenceDetect :消除对同一对象循环引用的问题,默认为false(如果不配置有可能会进入死循环) WriteNullBooleanAsFalse:Boolean字段如果为null,输出为false,而非null WriteMapNullValue:是否输出值为null的字段,默认为false。

项目初尝试运行

经过上述的配置我们基本完成对了SpringBoot整合FastJson的内容,我们接下来尝试运行下项目,如下图6所示:

图6

可以看到我们的项目正常运行了,我们访问之前编写的查询列表的请求,看是否给我返回了相应的数据,访问地址:127.0.0.1:8080/user/list,如下图7所示:

图7

可以看到我们得到了我们想要的结果,那么接下来我们该如何去测试fastJson是否已经生效了呢?

我们上述的配置中添加一个SerializerFeatures(WriteMapNullValue)这个配置的含义就是输入为NULL值的字段,我们尝试修改数据库中的nameNULL看看效果如何,如下图8所示:

图8

我们可以看到我们将之前的name为test的name字段设置了NULL,我们请求列表接口还是可以得到该字段的但是字段返回是没有值得。 接下来修改FastJsonConfiguration类内的setSerializerFeatures方法再添加一个配置WriteNullStringAsEmpty,我们再次重启项目访问用户列表地址效果如何?修改配置如下图9所示:

图9

配置修改完成后,重启我们的项目程序,访问用户列表请求地址,得到的返回结果如下图10所示:

图10

可以看到上述图10内的红色标记处,name的值从NULL变成了"",那么证明我们的fastJson消息的转换配置完美生效了。如果你的效果不是上图10所示,请检查FastJsonConfiguration配置以及maven依赖问题。

总结

以上便是我们本章的全部讲解内容,本章主要讲解了SpringBoot项目如何将返回的消息从内部的Json转换变成fastJson转换,如何添加fastJson的转换器过滤配置SerializerFeature。因为@ResultControll注解的Controller本身返回值就是json字符串,我们上述讲解通过两次修改fastJson过滤器配置的方式见证了fastJson的神奇效果。

本上内容已经上传到码云:

SpringBoot配套源码地址:https://gitee.com/hengboy/spring-boot-chapter

SpringCloud配套源码地址:https://gitee.com/hengboy/spring-cloud-chapter

SpringBoot相关系列文章请访问:目录:SpringBoot学习目录

QueryDSL相关系列文章请访问:QueryDSL通用查询框架学习目录

SpringDataJPA相关系列文章请访问:目录:SpringDataJPA学习目录

SpringBoot相关文章请访问:目录:SpringBoot学习目录,感谢阅读!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏SpringBoot 核心技术

SpringCloud组件:Eureka高可用集群部署

我们在之前的章节SpringCloud组件:搭建Eureka服务注册中心学习到了单个服务注册中心的创建,不过单模式的部署方式在实战中确实不太提倡,因为有很多种原...

1512
来自专栏编程

Spring Boot+Mybatis+Redis二级缓存开发指南

背景 Spring-Boot因其提供了各种开箱即用的插件,使得它成为了当今最为主流的Java Web开发框架之一。Mybatis是一个十分轻量好用的ORM框架。...

37910
来自专栏cloudskyme

maven 学习总结

1、关于Maven 最近学了一些maven方面的知识,感觉这个工具挺好用,为防遗忘现总结一下。Maven是一个项目管理工具,它可以通过一段描述信息来管理项目的构...

3015
来自专栏漏斗社区

代码审计| Spring框架实例篇

Java代码审计Spring框架思路篇中,斗哥为大家讲述了如何得到Spring审计的Demo,审计源码,根据IDEA与Spring框架审计思路初步判定是否存在漏...

632
来自专栏JMCui

Spring消息之JMS.

1335
来自专栏IT笔记

系统监控工具JavaMelody使用案例

官方简介: JavaMelody 能够监测Java或Java EE应用程序服务器,并以图表的方式显示:Java内存和Java CPU使用情况,用户Session...

2727
来自专栏电光石火

SEVERE: Error configuring application listener of class org.springframework.web.

创建一个干净Spring MVC用Tomcat启动之后一直显示下面这个错误,网上找了很多方法也没有解决问题,后面最终找到终极解决方案

19910
来自专栏java一日一条

Spring Boot + Mybatis + Redis二级缓存开发指南

Spring-Boot因其提供了各种开箱即用的插件,使得它成为了当今最为主流的Java Web开发框架之一。Mybatis是一个十分轻量好用的ORM框架。Red...

813
来自专栏Java帮帮-微信公众号-技术文章全总结

Maven 核心原理解析(1)

Maven 是每一位Java工程师每天都会接触的工具, 但据我所知其实很多人对Maven理解的并不深, 只把它当做一个依赖管理工具(下载依赖、打包), Mave...

39310
来自专栏battcn

一起来学SpringBoot | 第二十四篇:数据库管理与迁移(Liquibase)

目前 SpringBoot 支持较好的两款工具分别是 flyway、 liquibase,支持 sql script,在初始化数据源之后执行指定的 脚本代码或者...

632

扫码关注云+社区