阿里Fastjson使用介绍

Java的快速JSON解析器/生成器–Fastjson使用

最近在项目开发中遇到一个情景:将JavaBean转为json字符串发送,接收到json字符串后在解析为Javabean。网上搜索有很多实现方法。其中最多的就是使用阿里巴巴的fastjson库。后来才发现项目架构中已经引入了fastjson,只不过平时只是简单生成json对象传到前台。

一、官方介绍

首先我们看看官方是如何介绍Fastjson:

什么是fastjson?

fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。

fastjson的优点

  1. 速度快
    fastjson相对其他JSON库的特点是快,从2011年fastjson发布1.1.x版本之后,其性能从未被其他Java实现的JSON库超越。
  2. 使用广泛
    fastjson在阿里巴巴大规模使用,在数万台服务器上部署,fastjson在业界被广泛接受。在2012年被开源中国评选为最受欢迎的国产开源软件之一。
  3. 测试完备
    fastjson有非常多的testcase,在1.2.11版本中,testcase超过3321个。每次发布都会进行回归测试,保证质量稳定。
  4. 使用简单
    fastjson的API十分简洁。
String text = JSON.toJSONString(obj); //序列化
VO vo = JSON.parseObject("{...}", VO.class); //反序列化
  1. 功能完备
    支持泛型,支持流处理超大文本,支持枚举,支持序列化和反序列化扩展。

二、Fastjson使用

GitHub项目地址:https://github.com/alibaba/fastjson
W3Cschool 教程地址:https://www.w3cschool.cn/fastjson/fastjson-quickstart.html

下载使用

在maven中央仓库中直接下载
http://repo1.maven.org/maven2/com/alibaba/fastjson/
或者配置maven依赖

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

将Java对象序列化为JSON字符串

package com.lyf.test;

import java.io.Serializable;

/**
 * 系统用户
 * 
 * @author LYF
 */
public class SysUser implements Serializable {
	
	private static final long serialVersionUID = 1L;
	
	private String userid;//用户名
	
	private String pwd;//密码
	
	private String name;//姓名
	
	private String gender;//性别
	
	private String email;//邮箱
	
	private String phone;//手机
	
	private String address;//详细地址
	
	public SysUser(){
	}

	public SysUser(String userid, String pwd, String name, String gender, String email, String phone, String address) {
		super();
		this.userid = userid;
		this.pwd = pwd;
		this.name = name;
		this.gender = gender;
		this.email = email;
		this.phone = phone;
		this.address = address;
	}

	public String getUserid() {
		return userid;
	}

	public void setUserid(String userid) {
		this.userid = userid;
	}

	public String getPwd() {
		return pwd;
	}

	public void setPwd(String pwd) {
		this.pwd = pwd;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getGender() {
		return gender;
	}

	public void setGender(String gender) {
		this.gender = gender;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getPhone() {
		return phone;
	}

	public void setPhone(String phone) {
		this.phone = phone;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

}

测试:

package com.lyf.test;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

public class FastJsonTest {
	
	public static void main(String[] args) {
		
		SysUser sysUser = new SysUser("admin","admin","张凡","男","sdfasd.163.com","15200000000","北京海淀区");
		
		String sysUserStr = JSON.toJSONString(sysUser);
		System.out.println("对象转JSON串:"+sysUserStr);
		
		SysUser sysUser1 = JSONObject.parseObject(sysUserStr, sysUser.getClass());
		System.out.println("JSON串转对象:"+sysUser1);
		
	}

}

结果:

对象转JSON串:{"address":"北京海淀区","email":"sdfasd.163.com","gender":"男","name":"张凡","phone":"15200000000","pwd":"admin","userid":"admin"}
JSON串转对象:北京海淀区

总结
像对象数组,对象集合,对象的集合属性都可以序列化为JSON字符串,在W3Cschool 教程里有示例。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章