FastJson实现复杂对象序列化与反序列化

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xqhadoop/article/details/62217954

一.认识FastJson

1.优势

fastjson是目前java语言中最快的json库,比自称最快的jackson速度要快,第三方独立测试结果说明比gson快大约6倍,fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库。 FastJson速度最快,fastjson具有极快的性能,超越任其他的Java Json parser。
2.用途

FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,Fastjson是一个Java语言编写的高性能功能完善的JSON库。

Fastjson支持java bean的直接序列化。 可以使用com.alibaba.fastjson.JSON这个类进行序列化和反序列化。

3.jar包下载地址

fastJson jar

二.FastJsonAPI介绍

FastJson功能强大,完全支持Java Bean、集合、Map、日期、Enum,支持范型,支持自省;无依赖。
Fastjson API入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。

1.常用函数

//将JavaBean序列化为JSON文本(常用)
public static final String toJSONString(Object object);

//把JSON文本parse为JavaBean(常用)
public static final T parseObject(String text, Class clazz);

2.其他函数

// 把JSON文本parse成JSONObject
public static final JSONObject parseObject(String text);

// 把JSON文本parse成JSONArray
 public static final JSONArray parseArray(String text);

//把JSON文本parse成JavaBean集合
public static final List parseArray(String text, Class clazz);

// 将JavaBean序列化为带格式的JSON文本
public static final String toJSONString(Object object, boolean prettyFormat);
 

// 把JSON文本parse为JSONObject或者JSONArray
public static final Objectparse(String text);


//将JavaBean转换为JSONObject或者JSONArray。
public static final Object toJSON(Object javaObject);

三.实战

1. 创建复杂对象

package test;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Map;
public class User{
public String username="";
public int id=0;
public ArrayList<Link>link=null;
public Map<String,Link> result=null;
//getter and setter省略(读者自行补充)
}
public class Link{
public String name="";
public String phone="";
//getter and setter省略(读者自行补充) 
} 


2.主程序

package test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONException; 
public class FastJsonTest {
 //填充user对象 
 public static void setUser(User user){
    	user.setId(1);
    	user.setUsername("xiaoxiang");
    	Link lk=new Link();
    	lk.setName("rongrong");
    	lk.setPhone("1234234");
    	Link lk1=new Link();
    	lk1.setName("rongrong");
    	lk1.setPhone("1234234");
    	ArrayList<Link> list=new ArrayList();
    	list.add(lk1);
    	list.add(lk);
    	user.setLink(list);
    	Map map=new HashMap();
    	map.put("123",lk);
    	map.put("234",lk1);
    	user.setResult(map);
    }
public static void main(String []args){
    User user=new User();
    setUser(user);
    //将javabean转成json
 String str=JSON.toJSONString(user); 
  System.out.println("fastJson"+str);
    //将json转成java bean
   User myuser=JSON.parseObject(str,User.class);
  System.out.println(myuser.getResult().get("123").getName());
}}

四.总结
FastJson确实在复杂对象序列化和反序列化方面做的比较好,而且速度和效率上都比java原生序列化机制要好。
但FastJson使用大对象或者大文件时,效果没有jackson好。你所以需要根据具体项目选择合适的序列化工具。

展开阅读全文

没有更多推荐了,返回首页