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

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/co…,这里我们使用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配套源码地址:gitee.com/hengboy/spr…

SpringCloud配套源码地址:gitee.com/hengboy/spr…

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

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

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

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

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


QQ技术交流群


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/392912.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一加6android9玩飞车掉,解锁新速度:一加6T深度评测

解锁新速度:一加6T深度评测2019-11-02 14:28:595点赞2收藏4评论创作立场声明:我们只谈智能硬件,向改变生活的智能硬件Say“嗨”!作为安卓旗舰机成员,一加这个品牌在玩机一类的同学手里可是大放光彩,各种刷机…

设计模式(第十七式:迭代器模式)

概念:  迭代器模式:Provide a way to access the elements of an aggregarte object sequentiaally with exposing its underlying representation. 提供一种访问容器对象内每个元素的一种方式,并且不暴露对象的一些内部细节。实现&#xf…

探讨跨域请求资源的几种方式

[转自:http://www.cnblogs.com/dojo-lzz/p/4265637.html] 什么是跨域JSONPproxy代理corsxdr由于浏览器同源策略,凡是发送请求url的协议、域名、端口三者之间任意一与当前页面地址不同即为跨域。具体可以查看下表(来源) JSONP 这种…

算法训练营 重编码_编码训练营适合您吗?

算法训练营 重编码by Joanna Gaudyn乔安娜高登(Joanna Gaudyn) 编码训练营适合您吗? (Is a Coding Bootcamp something for you?) Coding bootcamps’ popularity is growing. It sounds like a perfect idea to fast-forward your career. But is it really some…

leetcode 771. 宝石与石头(set)

给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。 J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a…

用ntdsutil命令中的restore object 更新版本号

备份域控建立好后,备份域信息,用目录还 原模式,还原域信息,用ntdsutil命令,中的 restore ob ject 更新版本号 本文转自9pc9com博客,原文链接: http://blog.51cto.com/215363/783334 如需…

python处理excel文件(xls和xlsx)

一、xlrd和xlwt 使用之前需要需要先安装,windows上如果直接在cmd中运行python则需要先执行pip3 install xlrd和pip3 install xlwt,如果使用pycharm则需要在项目的解释器中安装这两个模块,File-Settings-Project:layout-Project Interpreter&a…

html块中的内容垂直居中,css如何设置行内元素与块级元素的内容垂直居中

首先我们先了解一下行内元素和块级元素行内元素(内联元素):没有自己的独立空间,它是依附于其他块级元素存在的,空间大小依附于内容多少。行内元素没有度、宽度、内外边距等属性。块级元素:占据独立的空间,具有宽度&…

Mina、Netty、Twisted一起学(五):整合protobuf

protobuf是谷歌的Protocol Buffers的简称,用于结构化数据和字节码之间互相转换(序列化、反序列化),一般应用于网络传输,可支持多种编程语言。protobuf怎样使用这里不再介绍,本文主要介绍在MINA、Netty、Twi…

leetcode 1. 两数之和(map)

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 示例: 给定 nums [2, 7, 11, 15], target …

Redis 3.0.1 安装和配置

一、下载,解压和编译Redis 12345# cd /tmp # wget http://download.redis.io/releases/redis-3.0.1.tar.gz # tar xzf redis-3.0.1.tar.gz # cd redis-3.0.1 # make二、下载、安装tclsh 测试编译: 1# make test得到如下错误信息: …

2021年南宁二中高考成绩查询,2021广西高考圆满结束,6月23日可查询成绩

6月8日下午,2021年高考统考圆满结束。今年广西参加高考统考考生人数40.05万余人,比2020年增加了2.2万人。我区预计6月23日可查询高考成绩,6月24日起可陆续填报志愿,我区的网上咨询会将于6月25日至27日举办。▲高考结束&#xff0c…

29 Python - 字符与编码

字符与编码 01 字符串本质 Python字符串相关概念 字符串 str 字节 bytes 字节数组 bytearray 电脑字符串存储机制 字符库:A、B每个字符有一个代码点如A是65 B为66,这种是方便人类读写的形式,但是最终需要存入计算机的CPU和内存&…

Linux 内存管理与系统架构设计

Linux 提供各种模式(比如,消息队列),但是最著名的是 POSIX 共享内存(shmem,shared memory)。 Linux provides a variety of schemes (such as message queues), but most notable is POSIX shar…

如何正确使用Node.js中的事件

by Usama Ashraf通过Usama Ashraf 如何正确使用Node.js中的事件 (How to use events in Node.js the right way) Before event-driven programming became popular, the standard way to communicate between different parts of an application was pretty straightforward: …

你的成功有章可循

读书笔记 作者 海军 海天装饰董事长 自我修炼是基础。通过自我学习,在预定目标的指引下,将获取的知识转化为个人能力,形成自我规律,不断循环,实现成功。 寻找和掌握规律,并熟练运用于实践,是成功…

98k用计算机图片,98K (HandClap)_谱友园地_中国曲谱网

《98K》文本歌词98K之歌-HandClap-抖音 制谱:孙世彦这首《HandClap》是Fitz&TheTantrums乐队演唱的一首歌曲,同时也是绝地求生中嚣张BGM,是一首吃鸡战歌!这首歌谱曲者和填词者都是三个人:JeremyRuzumna&#xff0c…

qt之旅-1纯手写Qt界面

通过手写qt代码来认识qt程序的构成,以及特性。设计一个查找对话框。以下是设计过程1 新建一个empty qt project2 配置pro文件HEADERS \Find.h QT widgetsSOURCES \Find.cpp \main.cpp3 编写对话框的类代码例如以下://Find.h #ifndef FIND_H #define F…

【随笔】写在2014年的第一天

想想好像就在不久前还和大家异常兴奋地讨论着世界末日的事,结果一晃也是一年前的事了。大四这一年,或者说整个2013年都是场摇摆不定的戏剧,去过的地方比前三年加起来还多的多,有时候也会恍惚地不知道自己现在在哪。简单记几笔&…

设计冲刺下载_如何运行成功的设计冲刺

设计冲刺下载by George Krasadakis通过乔治克拉萨达基斯(George Krasadakis) Design Sprints can generate remarkable output for your company — such as a backlog of impactful ideas, functional prototypes, learning and key insights from customers along with real…