fastJson和Gson的比较
来源:互联网 发布:吉他从零开始软件 编辑:程序博客网 时间:2024/05/01 07:35
FastJson和Gson的简单比较
先用gson写一个util工具来感受下.
public class JsonUtil { private static Gson gson = new GsonBuilder().setDateFormat("EEE MMM dd yyyy HH:mm:ss zzz").create(); @SuppressWarnings({"unchecked", "rawtypes"}) public static Object readJson2Object(String json, Class className) { return gson.fromJson(json, className); } @NonNull @SuppressWarnings({"rawtypes", "unchecked"}) public static List readJson2List(String json, Class className) { return JSON.parseArray(json, className); List<Object> lists = new ArrayList(); try { JsonParser jsonParser = new JsonParser(); JsonElement jsonElement = jsonParser.parse(json); JsonArray jsonArray = jsonElement.getAsJsonArray(); java.util.Iterator<JsonElement> it = jsonArray.iterator(); while (it.hasNext()) { jsonElement = it.next(); json = jsonElement.toString(); Object obj = gson.fromJson(json, className); lists.add(obj); } } catch (IllegalStateException e) { return lists; } return lists; } @SuppressWarnings("rawtypes") public static String readList2Json(List list) { return gson.toJson(list); } public static String readObject2json(Object object) { return gson.toJson(object); }
可以看到,在装换List时候,gson还是挺麻烦的,其余都还可以接受.
再来看下用fastJson写的情况.
import com.alibaba.fastjson.JSON;public class JsonUtil { public static Object readJson2Object(String json, Class className) { return JSON.parseObject(json, className); } public static List readJson2List(String json, Class className) { return JSON.parseArray(json, className); } public static String readList2Json(List list) { return JSON.toJSONString(list); } public static String readObject2json(Object object) { return JSON.toJSONString(object); }
以上是使用fastJson 写的一个util.完全可以满足我们一般json转化的需求,而且我们可以看到,相当的简洁.
而且有针对List
优化过.可以快速的转化!!
当然,两者不仅仅只有这样的区别,来看看性能上的
[ 测试内容请点击 ]
测试结果如下.
- JSON转Bean,5个线程并发,约200字节对象,1千万次转换:
* Bean转JSON,5个线程并发,约200字节对象,1千万次转换:**
可以看到,完全fastJson完全碾压Gson.请少年早日脱离gson这个,换上fastJson
maven地址如下:
http://mvnrepository.com/artifact/com.alibaba/fastjson
csdn这个编辑界面也是挺货不对板的,在编辑器看是一个样子,最后的效果是一个样子.跪了….就是完全不时尚的样子
1. JSONField 介绍
package com.alibaba.fastjson.annotation;public @interface JSONField { // 配置序列化和反序列化的顺序,1.1.42版本之后才支持 int ordinal() default 0; // 指定字段的名称 String name() default ""; // 指定字段的格式,对日期格式有用 String format() default ""; // 是否序列化 boolean serialize() default true; // 是否反序列化 boolean deserialize() default true;}
2. JSONField配置方式
FieldInfo可以配置在getter/setter方法或者字段上。例如:
2.1 配置在getter/setter上
public class A { private int id; @JSONField(name="ID") public int getId() {return id;} @JSONField(name="ID") public void setId(int value) {this.id = id;} }
2.2 配置在field上
public class A { @JSONField(name="ID") private int id; public int getId() {return id;} public void setId(int value) {this.id = id;} }
3. 使用format配置日期格式化
public class A { // 配置date序列化和反序列使用yyyyMMdd日期格式 @JSONField(format="yyyyMMdd") public Date date; }
4. 使用serialize/deserialize指定字段不序列化
public class A { @JSONField(serialize=false) public Date date; } public class A { @JSONField(deserialize=false) public Date date; }
5. 使用ordinal指定字段的顺序
缺省fastjson序列化一个java bean,是根据fieldName的字母序进行序列化的,你可以通过ordinal指定字段的顺序。这个特性需要1.1.42以上版本。
public static class VO { @JSONField(ordinal = 3) private int f0; @JSONField(ordinal = 2) private int f1; @JSONField(ordinal = 1) private int f2;}
一切别的常见问题看下面链接
https://github.com/alibaba/fastjson/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98
0 0
- fastJson和Gson的比较
- fastjson,gson的性能比较
- Gson和Fastjson的使用
- fastJSON和GSON的解析
- JSON解析工具比较,主要GSON和FastJSON
- JSON解析工具比较,主要GSON和FastJSON
- Gson与Fastjson性能比较
- Android fastJson和Gson
- Gson、Jackson和FastJSON
- json之Gson和FastJson
- Gson和Fastjson解析对比
- FastJSON、Jackson和Gson用法
- Json,Gson,FastJson解析数据比较
- FastJson、Gson、Jackson json解析性能比较
- FastJson和Gson解析json的小例子
- Android常用Json解析框架GSON和FastJson的使用
- Gson 和 Fastjson 你不知道的事
- 使用Gson和FastJson解析JSON数据遇到的问题
- BAT及各大互联网公司2014前端笔试面试题(Html,Css篇)
- Linux消息队列通讯编程
- Otto的使用和源码分析
- java获取当前类的绝对路径
- leetCode #217 Contains Duplicate
- fastJson和Gson的比较
- android 资源文件命名规范
- 从Action中传值到JSP页面的方法
- php发送邮件二种方法 php使用smtp发送邮件
- C++函数的定义与调用
- 从Theano到Lasagne:基于Python的深度学习的框架和库
- CentOS 7使用Postfix、Dovecot及MariaDB搭建邮箱服务器
- 关于实现自定义的pop动画文章
- postgresql模式与数据库的关系