zoukankan      html  css  js  c++  java
  • FastJson实现复杂对象序列化与反序列化

    原文:http://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,常用的序列化操作都可以在

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

    2.其他函数

    1. // 把JSON文本parse成JSONObject  
    2. public static final JSONObject parseObject(String text);  
    3.   
    4. // 把JSON文本parse成JSONArray  
    5.  public static final JSONArray parseArray(String text);  
    6.   
    7. //把JSON文本parse成JavaBean集合  
    8. public static final List parseArray(String text, Class clazz);  
    9.   
    10. // 将JavaBean序列化为带格式的JSON文本  
    11. public static final String toJSONString(Object object, boolean prettyFormat);  
    12.    
    13.   
    14. // 把JSON文本parse为JSONObject或者JSONArray  
    15. public static final Objectparse(String text);  
    16.   
    17.   
    18. //将JavaBean转换为JSONObject或者JSONArray。  
    19. public static final Object toJSON(Object javaObject);  


    三.实战

    1. 创建复杂对象

    1. package test;  
    2. import java.io.Serializable;  
    3. import java.util.ArrayList;  
    4. import java.util.Map;  
    5. public class User{  
    6. public String username="";  
    7. public int id=0;  
    8. public ArrayList<Link>link=null;  
    9. public Map<String,Link> result=null;  
    10. //getter and setter省略(读者自行补充)  
    11. }  
    12. public class Link{  
    13. public String name="";  
    14. public String phone="";  
    15. //getter and setter省略(读者自行补充)   
    16. }   

    2.主程序

    1. package test;  
    2. import java.util.ArrayList;  
    3. import java.util.HashMap;  
    4. import java.util.Map;  
    5. import com.alibaba.fastjson.JSON;  
    6. import com.alibaba.fastjson.JSONObject;  
    7. import com.alibaba.fastjson.JSONArray;  
    8. import com.alibaba.fastjson.JSONException;   
    9. public class FastJsonTest {  
    10.  //填充user对象   
    11.  public static void setUser(User user){  
    12.         user.setId(1);  
    13.         user.setUsername("xiaoxiang");  
    14.         Link lk=new Link();  
    15.         lk.setName("rongrong");  
    16.         lk.setPhone("1234234");  
    17.         Link lk1=new Link();  
    18.         lk1.setName("rongrong");  
    19.         lk1.setPhone("1234234");  
    20.         ArrayList<Link> list=new ArrayList();  
    21.         list.add(lk1);  
    22.         list.add(lk);  
    23.         user.setLink(list);  
    24.         Map map=new HashMap();  
    25.         map.put("123",lk);  
    26.         map.put("234",lk1);  
    27.         user.setResult(map);  
    28.     }  
    29. public static void main(String []args){  
    30.     User user=new User();  
    31.     setUser(user);  
    32.     //将javabean转成json  
    33.  String str=JSON.toJSONString(user);   
    34.   System.out.println("fastJson"+str);  
    35.     //将json转成java bean  
    36.    User myuser=JSON.parseObject(str,User.class);  
    37.   System.out.println(myuser.getResult().get("123").getName());  
    38. }}  

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

  • 相关阅读:
    spring-boot 中application.properties的各种配置
    spring-boot 集合mybatis 的分页查询
    spring boot热部署pom.xml配置
    ssm框架整合
    mybatis逆向工程
    整合hibernate的lucene大数据模糊查询
    QBC查询、离线条件查询(DetachedCriteric)和分页查询模版
    虚拟机vmnet0、vmnet1和vmnet8的区别
    centOS7-配置网络地址
    在windows中使用Navicat连接Linux虚拟机中的mysql数据库
  • 原文地址:https://www.cnblogs.com/gyadmin/p/8301253.html
Copyright © 2011-2022 走看看