2021SC@SDUSC
项目描述
Fastjson简介
Fastjson是alibaba开源的一套json处理器,可以将 Java 对象转换为 JSON 格式,也可以将 JSON 字符串转换为 Java 对象。
提供了 toJSONString() 和 parseObject() 方法来将 Java 对象与 JSON 相互转换。调用toJSONString方 法即可将对象转换成 JSON 字符串,parseObject 方法则反过来将 JSON 字符串转换成对象。
允许转换预先存在的无法修改的对象(只有class、无源代码)。
特点
(1)能够支持将java bean序列化成JSON字符串,也能够将JSON字符串反序列化成Java bean。
(2)FastJson操作JSON的速度非常快。
(3)无其他包的依赖。
(4)使用比较方便。
与其他json处理器的对比
由测试结果可看出,Fastjson无论在序列化性能、反序列化性能上都优于其他常用的json处理器,并且Fastjson的jar包相对较小,方便导入。
安装说明
在maven仓库直接下载:https://repo1.maven.org/maven2/com/alibaba/fastjson/
配置maven依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.23</version>
</dependency>
使用说明
- 将JavaBean转换成json字符串:
实体类:
调用JSON.toJSONString()方法:
结果:
2.将json字符串转换成JavaBean:
结果:
关键源码
Fastjson的关键源代码所在位置由图所示。其中,以JSON、JSONArray和JSONObject三个类最为关键,而JSON类又为整个项目的入口类。
下面简要分析各个包的功能。
- annotation:定义了项目的注解。
- asm:增强既有的解析json字符串或生成Java对象的类的功能
- parser:json字符串解析器,用于将json字符串解析成Java对象
- serialiser:将Java对象序列化成json字符串
- spi:服务提供者接口
- support:提供支持,例如项目的配置
- util:工具包,提供类加载器等工具
组内分工
根据Fastjson入口类的功能,我们将任务分成了四个部分:
- json字符串解析为Java Object或JSONObject
- json字符串解析为JSONArray
- Java对象序列化为json字符串
- Java对象序列化并以流的形式输出
四个功能模块,层层调用其他包,涵盖了整个Fastjson项目
我的工作
我负责分析如何将json字符串解析为Java Object和JSONObject。
涉及到的Java class有JSON和JSONObject。
涉及到的包有annotation、parser、support和util。
其中,parser文件夹中如何解析json字符串的代码为该部分的核心代码。
json字符串的解析工作由这些类来完成。
分析方式
使用IDEA自带的代码分析工具,加上使用Fastjson提供的功能进行分析。