Fastjson源码分析综述

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>

使用说明

  1. 将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入口类的功能,我们将任务分成了四个部分:

  1. json字符串解析为Java Object或JSONObject
  2. json字符串解析为JSONArray
  3. Java对象序列化为json字符串
  4. Java对象序列化并以流的形式输出

四个功能模块,层层调用其他包,涵盖了整个Fastjson项目

我的工作

我负责分析如何将json字符串解析为Java Object和JSONObject。
涉及到的Java class有JSON和JSONObject。
涉及到的包有annotation、parser、support和util。
其中,parser文件夹中如何解析json字符串的代码为该部分的核心代码。
parser文件夹

json字符串的解析工作由这些类来完成。

分析方式

使用IDEA自带的代码分析工具,加上使用Fastjson提供的功能进行分析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值