Fastjson基础使用学习

111 阅读1分钟

一、基础概念

fastjson是由阿里巴巴下面的开源框架(官网),主要用于对代码进行序列化和反序列化,所谓序列化就是将Java bean-->json格式,反序列化将json-->java bean。

为什么使用fastjson:

  • 速度快:fastjson相对其他JSON库的特点是快,从2011年fastjson发布1.1.x版本之后,其性能从未被其他Java实现的JSON库超越。
  • 使用广泛:fastjson在阿里巴巴大规模使用。
  • 测试完备:fastjson有非常多的testcase,在1.2.11版本中,testcase超过3321个。每次发布都会进行回归测试,保证质量稳定。
  • 使用简单:fastjson的API十分简洁。
String text = JSON.toJSONString(obj); //序列化
VO vo = JSON.parseObject("{...}", VO.class); //反序列化
  • 功能完备:支持泛型,支持流处理超大文本,支持枚举,支持序列化和反序列化扩展。

二、代码demo

1、依赖配置

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>2.0.31</version>
</dependency>

2、Bean

@NoArgsConstructor    // 无参构造函数
@AllArgsConstructor   // 全参构造函数
@Data                 // get/set/tostring
public class User {
    @JSONField(name = "id", ordinal = 1)
    private Integer id;
    @JSONField(name = "姓名", ordinal = 2)
    private String name;
    @JSONField(name = "年龄", ordinal = 3)
    private Integer age;
    @JSONField(name = "性别", ordinal = 4)
    private String gender;
    @JSONField(name = "地址", ordinal = 5)
    private String address;
    @JSONField(name = "生日", format = "yyyy-MM-dd", ordinal = 6, alternateNames = {"出生日期","生日"})
    private Date birth;
    @JSONField(name = "爱好", ordinal = 7)
    private String[] hobbits;
}
	@Test
	public void testJsonFiledSerializable() {
		User user = new User(1, "张三", 25, "男", "北京市", new Date(), new String[]{});
		System.out.println(JSON.toJSONString(user));
		String str = "{"id":1,"姓名":"李四","年龄":25,"性别":"","地址":"北京市","出生日期":"2020-12-12","爱好":[]}";
		System.out.println(JSON.parseObject(str, User.class));
	}
{"id":1,"姓名":"张三","年龄":25,"性别":"男","地址":"北京市","生日":"2023-12-04","爱好":[]}
User(id=1, name=李四, age=25, gender=男, address=北京市, birth=Sat Dec 12 00:00:00 CST 2020, hobbits=[])