fastjson与Gson
2017-05-24 16:52
162 查看
各个常用JSON技术的简介和优劣:
1、Google的Gson
Google自行研发,2008年五月公开发布第一版后已被许多公司或用户应用。
Gson的应用主要为toJson与fromJson两个转换函数,无依赖,不需要例外额外的jar,能够直接跑在JDK上。
而在使用这种对象转换之前需先创建好对象的类型以及其成员才能成功的将JSON字符串成功转换成相对应的对象。
类里面只要有get和set方法,Gson完全可以将复杂类型的json到bean或bean到json的转换,是JSON解析的神器。
Gson在功能上面无可挑剔,但是性能上面比FastJson有所差距。
2、阿里巴巴的FastJson
Fastjson是一个Java语言编写的高性能的JSON处理器,由阿里巴巴公司开发。
无依赖,不需要例外额外的jar,能够直接跑在JDK上。
FastJson在复杂类型的Bean转换Json上会出现一些问题,可能会出现引用的类型,导致Json转换出错,需要制定引用。
FastJson采用独创的算法,将parse的速度提升到极致,超过所有json库。
怎么获得fastjson?
你可以通过如下地方下载fastjson:
SVN:http://code.alibabatech.com/svn/fastjson/trunk/
WIKI:http://code.alibabatech.com/wiki/display/FastJSON/Home
Issue Tracking:http://code.alibabatech.com/jira/browse/FASTJSON
maven坐标:
fastjson入口类是com.alibaba.fastjson.JSON,主要的API是JSON.toJSONString,和parseObject。
序列化:
反序列化:
泛型反序列化:
fastjson的使用例子请点这里
fastjson如何处理日期
使用ISO-8601日期格式
全局修改日期格式
如何定制序列化?
你可以使用SimplePrePropertyFilter过滤字段,详细看这里:
https://github.com/alibaba/fastjson/wiki/%E4%BD%BF%E7%94%A8SimplePropertyPreFilter%E8%BF%87%E6%BB%A4%E5%B1%9E%E6%80%A7
关于定制序列化,详细的介绍看这里:
https://github.com/alibaba/fastjson/wiki/%E5%AE%9A%E5%88%B6%E5%BA%8F%E5%88%97%E5%8C%96
使用@JSONField定制序列化
fastjson提供了使用Annotation定制序列化和反序列化的功能。
https://github.com/alibaba/fastjson/wiki/JSONField
将对象中的空值输出
缺省情况下fastjson不输出对象的空值的,如果你需要输出空值,看这里
https://github.com/alibaba/fastjson/wiki/WriteNull_cn
原文:https://github.com/alibaba/fastjson/wiki
Gson使用:看这里http://blog.csdn.net/evan_man/article/details/50855618
1、Google的Gson
Google自行研发,2008年五月公开发布第一版后已被许多公司或用户应用。
Gson的应用主要为toJson与fromJson两个转换函数,无依赖,不需要例外额外的jar,能够直接跑在JDK上。
而在使用这种对象转换之前需先创建好对象的类型以及其成员才能成功的将JSON字符串成功转换成相对应的对象。
类里面只要有get和set方法,Gson完全可以将复杂类型的json到bean或bean到json的转换,是JSON解析的神器。
Gson在功能上面无可挑剔,但是性能上面比FastJson有所差距。
2、阿里巴巴的FastJson
Fastjson是一个Java语言编写的高性能的JSON处理器,由阿里巴巴公司开发。
无依赖,不需要例外额外的jar,能够直接跑在JDK上。
FastJson在复杂类型的Bean转换Json上会出现一些问题,可能会出现引用的类型,导致Json转换出错,需要制定引用。
FastJson采用独创的算法,将parse的速度提升到极致,超过所有json库。
怎么获得fastjson?
你可以通过如下地方下载fastjson:
SVN:http://code.alibabatech.com/svn/fastjson/trunk/
WIKI:http://code.alibabatech.com/wiki/display/FastJSON/Home
Issue Tracking:http://code.alibabatech.com/jira/browse/FASTJSON
maven坐标:
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.21</version> </dependency>
fastjson入口类是com.alibaba.fastjson.JSON,主要的API是JSON.toJSONString,和parseObject。
public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject public static final T parseObject(String text, Class clazz); // 把JSON文本parse为JavaBean public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray public static final List parseArray(String text, Class clazz); //把JSON文本parse成JavaBean集合 public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本 public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本 public static final Object toJSON(Object javaObject); //6将JavaBean转换为JSONObject或者JSONArray。
序列化:
String jsonString = JSON.toJSONString(obj);
反序列化:
VO vo = JSON.parseObject("...", VO.class);
泛型反序列化:
import com.alibaba.fastjson.TypeReference; List<VO> list = JSON.parseObject("...", new TypeReference<List<VO>>() {});
fastjson的使用例子请点这里
fastjson如何处理日期
JSON.toJSONStringWithDateFormat(date, "yyyy-MM-dd HH:mm:ss.SSS")
使用ISO-8601日期格式
JSON.toJSONString(obj, SerializerFeature.UseISO8601DateFormat);
全局修改日期格式
JSON.DEFFAULT_DATE_FORMAT = "yyyy-MM-dd"; JSON.toJSONString(obj, SerializerFeature.WriteDateUseDateFormat);
如何定制序列化?
你可以使用SimplePrePropertyFilter过滤字段,详细看这里:
https://github.com/alibaba/fastjson/wiki/%E4%BD%BF%E7%94%A8SimplePropertyPreFilter%E8%BF%87%E6%BB%A4%E5%B1%9E%E6%80%A7
关于定制序列化,详细的介绍看这里:
https://github.com/alibaba/fastjson/wiki/%E5%AE%9A%E5%88%B6%E5%BA%8F%E5%88%97%E5%8C%96
使用@JSONField定制序列化
fastjson提供了使用Annotation定制序列化和反序列化的功能。
https://github.com/alibaba/fastjson/wiki/JSONField
将对象中的空值输出
缺省情况下fastjson不输出对象的空值的,如果你需要输出空值,看这里
https://github.com/alibaba/fastjson/wiki/WriteNull_cn
原文:https://github.com/alibaba/fastjson/wiki
Gson使用:看这里http://blog.csdn.net/evan_man/article/details/50855618
相关文章推荐
- json对象和java对象的相互转换方法(json-lib、jackson、fastjson、gson)
- 解析Json的谷歌官方方法Gson和阿里巴巴的fastJson方法。
- Json、FastJson、Gson
- FastJson Jackson Gson使用教程
- Gson与Fastjson性能比较
- Json转换工具类(基于google的Gson和阿里的fastjson)
- Java学习总结(二十)——JSON解析:官方解析,GSON解析,FastJSON解析,
- 简单json,FastJson,Gson解析
- com.alibaba.fastjson.JSONObject cannot be cast to com.google.gson.internal.LinkedTreeMap
- 解决fastjson、Jackson、Gson解析Json数据时,key为Java中关键字无法解析的问题
- fastjson,gson,jackson类型性能对比
- android fastjson gson 学习 [记录]
- fastJSON和GSON的解析
- Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例
- FastJson和Gson解析json的小例子
- FastJson、Jackson、Gson进行Java对象转换Json的细节处理
- Gson,FastJson, Jackson测试
- fastJson和Gson的比较
- Gson 与 Fastjson 使用的初步详解
- Gson和Fastjson解析对比