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包下载地址
二.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.其他函数
- // 把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好。你所以需要根据具体项目选择合适的序列化工具。
FastJson实现复杂对象序列化与反序列化的更多相关文章
- java 对象序列化与反序列化
Java序列化与反序列化是什么? 为什么需要序列化与反序列化? 如何实现Java序列化与反序列化? 本文围绕这些问题进行了探讨. 1.Java序列化与反序列化 Java序列化是指把Java对象转换为 ...
- C#对象序列化与反序列化zz
C#对象序列化与反序列化(转载自:http://www.cnblogs.com/LiZhiW/p/3622365.html) 1. 对象序列化的介绍........................ ...
- C#对象序列化与反序列化
C#对象序列化与反序列化(转载自:http://www.cnblogs.com/LiZhiW/p/3622365.html) 1. 对象序列化的介绍.......................... ...
- Java Io 对象序列化和反序列化
Java 支持将任何对象进行序列化操作,序列化后的对象文件便可通过流进行网络传输. 1. 对象序列化就是将对象转换成字节序列,反之叫对象的反序列化 2. 序列化流ObjectOut ...
- Java对象序列化与反序列化一 JSON
Java对象序列化与反序列化一 JSON 1. 依赖库 jackson-all-1.6.1.jar 2. 代码 public class Student { private String nam ...
- Java之对象序列化和反序列化
一.对象序列化和反序列化存在的意义: 当你创建对象,只要你需要,他就一直存在,但当程序结束,对象就会消失,但是存在某种情况,如何让程序在不允许的状态,仍然保持该对象的信息.并在下次程序运行的时候使用该 ...
- Java 序列化 对象序列化和反序列化
Java 序列化 对象序列化和反序列化 @author ixenos 对象序列化是什么 1.对象序列化就是把一个对象的状态转化成一个字节流. 我们可以把这样的字节流存储为一个文件,作为对这个对象的复制 ...
- Java对象序列化和反序列化的工具方法
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import ja ...
- python第四十九课——对象序列化与反序列化
person.py class Person: def __init__(self,*args,**kwargs): print('我是Person类的构造...') # self.name=name ...
随机推荐
- 【java异常】It's likely that neither a Result Type nor a Result Map was specified
错误原因:mybatis配置文件没有返回类型参数 resultType 解决办法:resultType= 添加
- 导入数据任务(id:373985)异常, 错误信息:解析导入文件错误,请检查导入文件内容,仅支持导入json格式数据及excel文件
小程序导入,别人导出的数据库json文件,错误信息如下: 导入数据库失败, Error: Poll error, 导入数据任务(id:373985)异常,错误信息:解析导入文件错误,请检查导入文件内容 ...
- Visual Studio调试XSLT
Visual Studio是一个很大的工具.很容易遗漏一些有用的特性.希望XSLT调试器不会错过.在下面,您可以看到调试器正在运行,因为xslt转换正在应用于某些XML.(请原谅我在示例中使用的毫无意 ...
- 学习-jdk8 特性
jdk8新特性 Lambda 表达式 Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中.方法引用 − 方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构 ...
- nuxtjs如何部署cdn及区分发布环境
1.部署cdn nuxt build 后的前端资源都会存放在.nuxt/dist/ 文件夹下面 img 目录存放的是使用到的图片资源,无论是开发中存放在 assets 文件夹里的,还是static里 ...
- ES6基础-ES6 class
作者 | Jeskson 来源 | 达达前端小酒馆 ES - Class 类和面向对象: 面向对象,即万物皆对象,面向对象是我们做开发一种的方式,开发思维,面向对象的思维中万物皆对象,以人作为例子,它 ...
- Python【每日一问】28
问: [基础题]:求 1+2!+3!+...+20! 的和 [提高题]:两个乒乓球队进行比赛,各出三人.甲队为 a,b,c 三人,乙队为 x,y,z 三人.已抽签决定比赛名单. 有人向队员打听比赛的名 ...
- PHP微信发红包简明教程
PHP微信发红包简明教程1首先进入公众号申请微信支付 申请成功账号密码会发到你指定的邮箱 是登陆商户平台的2 进入后申请发红包借口3 调用发红包接口 https://api.mch.weixin.qq ...
- centos上nginx转发tcp请求
下载最新版nginx > wget http://nginx.org/download/nginx-1.17.1.tar.gz 解压缩 > tar zxvf nginx-1.17.1.ta ...
- git cherry-pick 命令,解决冲突后没有 commit 变更,再次pull 时出错
Git : You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists). 解决方法:(1)使用git status 命令查看当前 ...