2021SC@SDUSC
我们小组共有4人,对fastjson开源项目的代码进行分析
目录
fastjson代码简介
fastjson代码分析的必要性和重要性
fastjson API使用(JAR包)示例
fastjson代码概述
团队分工
总结
fastjson开源git仓库:
fastjson是一个能将Java对象转化成JSON格式的一个Java类库;fastjson也可以将JSON字符串转化为对应的Java对象。fastjson可以以Jar包的形式,嵌入已存在的各Java项目中以供调用。
1、使用IDEA新建项目,添加maven依赖l
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.76</version>
</dependency
2、示例代码如下
import com.alibaba.fastjson.JSON;public class JSONTest {public static void main(String[] args) {Person onePerson=new Person("Liam",20,"10001");String JSONString= JSONString(onePerson);System.out.println(JSONString);Person nextPerson=JSON.parseObject(JSONString,Person.class);}
}
打印的JSONString为
{"age":20,"ID":"10001","name":"Liam"}
可以看出fastjson已经生成了可以由前端浏览器识别的JSON字符串
同时,通过设置断点,查看内存中存储的nextPerson对象是否与onePerson相同
可以看到两个对象相同。
其中Person类如下。特别地,Person类有的getter、setter,否则私有成员变量无法序列化、也无法赋值。
public class Person {private String name;private int age;private String ID;public Person() {name="";age=-1;ID="";}public Person(String name, int age, String ID) {this.name = name;this.age = age;this.ID = ID;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getID() {return ID;}public void setID(String ID) {this.ID = ID;}
}
经过我们组对fastjson开源代码的了解以及简单分析,我们得出以下结论
由于JSON类规定了绝大部分对外的函数接口,以下重点分析JSON抽象类包含的方法:
此外,fastjson还编写了为JSON及其派生类提供服务的类,根据功能不同存放在不同的包内,以下简要介绍
- annotation包:fastjson项目组编写的Java注解包
- parser包:为parse及同类方法提供服务的包,主要以deserializer(反序列化)为主
- serializer包:为toString类型的方法提供服务,主要负责将JSON对象转化为字节流,提供给toString方法使用
- support包:主要存放fastjson调用的其他开源代码
- util包:存放为fastjson功能提供基础服务的类
此外,还有l等其他文件,是fastjson项目使用的包括maven在内的项目管理等工具等配置文件
在组内讨论时,我们发现parse的方法和toString方法内部逻辑大有不同,所以我们将这两类分开进行讨论。我和何梓瑞负责parse的方法,在parse方法中,存在大量有可能共用的方法(parser),我们决定一起讨论;与此同时我们俩各自确定一个调用parser的方法方向,我选择了parseArray,何梓瑞选择了parseObject,细节有待于根据代码进行更具体分析后的讨论。
fastjson代码的分析才刚刚开始,我们组内成员还只停留在代码的结构分析上,有待进一步深入,按照先前的分工对代码进行深入的分析、解读。按照计划,我们将在下个星期开始对fastjson的各方法开始分析工作。感谢戴老师的指导,感谢各位老师的阅读
本文发布于:2024-02-01 12:50:42,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170676304236716.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |