前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第五章:配置使用FastJson返回Json视图本章目标创建SpringBoot项目添加依赖项目初尝试运行总结

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

作者头像
恒宇少年
发布2018-06-27 15:07:46
1.1K0
发布2018-06-27 15:07:46
举报

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学习目录,感谢阅读!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.04.06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 本章目标
  • 创建SpringBoot项目
  • 添加依赖
  • 项目初尝试运行
  • 总结
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档