fastJson和Gson的比较

前端之家收集整理的这篇文章主要介绍了fastJson和Gson的比较前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

FastJson和Gson的简单比较

先用gson写一个util工具来感受下.

  1. public class JsonUtil {
  2.  
  3. private static Gson gson = new GsonBuilder().setDateFormat("EEE MMM dd yyyy HH:mm:ss zzz").create();
  4.  
  5. @SuppressWarnings({"unchecked","rawtypes"})
  6. public static Object readJson2Object(String json,Class className) {
  7. return gson.fromJson(json,className);
  8. }
  9.  
  10.  
  11. @NonNull
  12. @SuppressWarnings({"rawtypes","unchecked"})
  13. public static List readJson2List(String json,Class className) {
  14. return JSON.parseArray(json,className);
  15. List<Object> lists = new ArrayList();
  16. try {
  17. JsonParser jsonParser = new JsonParser();
  18. JsonElement jsonElement = jsonParser.parse(json);
  19. JsonArray jsonArray = jsonElement.getAsJsonArray();
  20. java.util.Iterator<JsonElement> it = jsonArray.iterator();
  21.  
  22. while (it.hasNext()) {
  23. jsonElement = it.next();
  24. json = jsonElement.toString();
  25. Object obj = gson.fromJson(json,className);
  26. lists.add(obj);
  27. }
  28. } catch (IllegalStateException e) {
  29. return lists;
  30. }
  31. return lists;
  32. }
  33.  
  34. @SuppressWarnings("rawtypes")
  35. public static String readList2Json(List list) {
  36. return gson.toJson(list);
  37. }
  38.  
  39. public static String readObject2json(Object object) {
  40. return gson.toJson(object);
  41. }

可以看到,在装换List时候,gson还是挺麻烦的,其余都还可以接受.
再来看下用fastJson写的情况.

  1. import com.alibaba.fastjson.JSON;
  2.  
  3. public class JsonUtil { 
  4. public static Object readJson2Object(String json,Class className) {
  5. return JSON.parSEObject(json,className);
  6. } 
  7.  
  8. public static List readJson2List(String json,className);
  9.   }
  10.  
  11. public static String readList2Json(List list) {
  12. return JSON.toJSONString(list); 
  13. }
  14.  
  15. public static String readObject2json(Object object) {
  16. return JSON.toJSONString(object); 
  17. }

以上是使用fastJson 写的一个util.完全可以满足我们一般json转化的需求,而且我们可以看到,相当的简洁.
而且有针对List优化过.可以快速的转化!!
当然,两者不仅仅只有这样的区别,来看看性能上的
[ 测试内容请点击 ]

测试结果如下.

  • JSON转Bean,5个线程并发,约200字节对象,1千万次转换:
比较 fastJson gson
吞吐量 64113.7 13952.8
总耗时 155 700

* Bean转JSON,5个线程并发,约200字节对象,1千万次转换:**

项目 Jackson gson
吞吐量 54802 17308.2
总耗时(秒) 181 560

可以看到,完全fastJson完全碾压Gson.请少年早日脱离gson这个,换上fastJson

maven地址如下:

http://mvnrepository.com/artifact/com.alibaba/fastjson


csdn这个编辑界面也是挺货不对板的,在编辑器看是一个样子,最后的效果是一个样子.跪了….就是完全不时尚的样子


1. JSONField 介绍

  1. package com.alibaba.fastjson.annotation;
  2.  
  3. public @interface JSONField {
  4. // 配置序列化和反序列化的顺序,1.1.42版本之后才支持
  5. int ordinal() default 0;
  6.  
  7. // 指定字段的名称
  8. String name() default "";
  9.  
  10. // 指定字段的格式,对日期格式有用
  11. String format() default "";
  12.  
  13. // 是否序列化
  14. boolean serialize() default true;
  15.  
  16. // 是否反序列化
  17. boolean deserialize() default true;
  18. }

2. JSONField配置方式

FieldInfo可以配置在getter/setter方法或者字段上。例如:

2.1 配置在getter/setter上

  1. public class A {
  2. private int id;
  3.  
  4. @JSONField(name="ID")
  5. public int getId() {return id;}
  6. @JSONField(name="ID")
  7. public void setId(int value) {this.id = id;}
  8. }

2.2 配置在field上

  1. public class A {
  2. @JSONField(name="ID")
  3. private int id;
  4.  
  5. public int getId() {return id;}
  6. public void setId(int value) {this.id = id;}
  7. }

3. 使用format配置日期格式化

  1. public class A {
  2. // 配置date序列化和反序列使用yyyyMMdd日期格式
  3. @JSONField(format="yyyyMMdd")
  4. public Date date;
  5. }

4. 使用serialize/deserialize指定字段不序列化

  1. public class A {
  2. @JSONField(serialize=false)
  3. public Date date;
  4. }
  5.  
  6. public class A {
  7. @JSONField(deserialize=false)
  8. public Date date;
  9. }

5. 使用ordinal指定字段的顺序

缺省fastjson序列化一个java bean,是根据fieldName的字母序进行序列化的,你可以通过ordinal指定字段的顺序。这个特性需要1.1.42以上版本。

  1. public static class VO {
  2. @JSONField(ordinal = 3)
  3. private int f0;
  4.  
  5. @JSONField(ordinal = 2)
  6. private int f1;
  7.  
  8. @JSONField(ordinal = 1)
  9. private int f2;
  10. }

一切别的常见问题看下面链接
https://github.com/alibaba/fastjson/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98

猜你在找的Json相关文章