搜索
您的当前位置:首页正文

第五章:配置使用FastJson返回Json视图

来源:二三娱乐

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

本章目标

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

创建SpringBoot项目

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

图1 图2

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

添加依赖

图3 图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 图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的神奇效果。

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

欢迎加入QQ技术交流群,共同进步。

QQ技术交流群
Top