阿里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 教程裏有示例。

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