原文: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. // 把JSON文本parse成JSONArray
  4. public static final JSONArray parseArray(String text);
  5. //把JSON文本parse成JavaBean集合
  6. public static final List parseArray(String text, Class clazz);
  7. // 将JavaBean序列化为带格式的JSON文本
  8. public static final String toJSONString(Object object, boolean prettyFormat);
  9. // 把JSON文本parse为JSONObject或者JSONArray
  10. public static final Objectparse(String text);
  11. //将JavaBean转换为JSONObject或者JSONArray。
  12. 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好。你所以需要根据具体项目选择合适的序列化工具。

FastJson实现复杂对象序列化与反序列化的更多相关文章

  1. java 对象序列化与反序列化

    Java序列化与反序列化是什么? 为什么需要序列化与反序列化? 如何实现Java序列化与反序列化? 本文围绕这些问题进行了探讨. 1.Java序列化与反序列化  Java序列化是指把Java对象转换为 ...

  2. C#对象序列化与反序列化zz

      C#对象序列化与反序列化(转载自:http://www.cnblogs.com/LiZhiW/p/3622365.html) 1. 对象序列化的介绍........................ ...

  3. C#对象序列化与反序列化

    C#对象序列化与反序列化(转载自:http://www.cnblogs.com/LiZhiW/p/3622365.html) 1. 对象序列化的介绍.......................... ...

  4. Java Io 对象序列化和反序列化

    Java 支持将任何对象进行序列化操作,序列化后的对象文件便可通过流进行网络传输. 1.      对象序列化就是将对象转换成字节序列,反之叫对象的反序列化 2.      序列化流ObjectOut ...

  5. Java对象序列化与反序列化一 JSON

    Java对象序列化与反序列化一 JSON 1. 依赖库 jackson-all-1.6.1.jar 2. 代码 public class Student {    private String nam ...

  6. Java之对象序列化和反序列化

    一.对象序列化和反序列化存在的意义: 当你创建对象,只要你需要,他就一直存在,但当程序结束,对象就会消失,但是存在某种情况,如何让程序在不允许的状态,仍然保持该对象的信息.并在下次程序运行的时候使用该 ...

  7. Java 序列化 对象序列化和反序列化

    Java 序列化 对象序列化和反序列化 @author ixenos 对象序列化是什么 1.对象序列化就是把一个对象的状态转化成一个字节流. 我们可以把这样的字节流存储为一个文件,作为对这个对象的复制 ...

  8. Java对象序列化和反序列化的工具方法

    import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import ja ...

  9. python第四十九课——对象序列化与反序列化

    person.py class Person: def __init__(self,*args,**kwargs): print('我是Person类的构造...') # self.name=name ...

随机推荐

  1. HTML基础一-html、CSS

    一.HTML标签 前端语言 HTML-将页面展现出来    CSS-修饰前端标签 让HTML更好看 css 对html 进行修饰    JS-能够让页面动起来 HTML htyper text mar ...

  2. git crate&query&delete tag(九)

    root@vmuer-VirtualBox:/opt/myProject# git log --pretty=oneline0169b7a1c4bccb47e76711f353fd8d3864bde9 ...

  3. Vue 生成PDF并下载

    实现原理 该功能原理是将页面转化伟canvas在把canvas转化为base64数据 最后将数据通过pdf.js生成下载,故需要和html2canvas一起使用 友情提醒这个pdf下载不能在app里直 ...

  4. django -- web框架的本质

    web框架本质 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端. 这样我们就可以自己实现Web框架了. 下面代码是一个简单的socket服 ...

  5. 网络协议 8 - TCP协议(上)

    上次说了“性本善”的 UDP 协议,这哥们秉承“网之初,性本善,不丢包,不乱序”的原则,徜徉在网络世界中.     与之相对应的,TCP 就像是老大哥一样,了解了社会的残酷,变得复杂而成熟,秉承“性恶 ...

  6. 【Codeforces】B. Div Times Mod

    B. Div Times Mod time limit per test 1 second memory limit per test 256 megabytes input standard inp ...

  7. Kdtree原理以及 vs Octree

    1. Kdtree原理 Kdtree是一种划分k维数据空间的数据结构,本质也是一颗二叉树,只不过每个节点的数据都是k维,当k=1时,就是图1所示的普通二叉树. 图1 1)Kdtree的建立 建立Kdt ...

  8. Webdriver get(url)加载时间太长

    运行Selenium脚本时,发现有时候由于网络或性能问题,加载网页时间太长,无法继续执行后续操作,但是实际上元素都已经加载出来了. 解决 # 设置页面加载超时时间 d.set_page_load_ti ...

  9. SpringMVC 字节流实现播放多媒体

    1.前言 在项目中,我们会遇到在线预览,播放MP3.图片.MP4等.用户上传文件后,将路径存储在数据库中,我们可动态读取数据库的数据,然后通过返回文件路径的字符串,在src中发送请求.当然这需要带参数 ...

  10. 【RabbitMQ学习之一】RabbitMQ入门

    环境 win7 rabbitmq-server-3.7.17 Erlang 22.1 RabbitMQ使用Erlang语言开发消息中间件.RabbitMQ基于AMQP(高级消息队列协议)协议,更适合业 ...