fastJson和Gson的比较
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还是挺麻烦的,其余都还可以接受. 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,className);
}
public static String readList2Json(List list) {
return JSON.toJSONString(list);
}
public static String readObject2json(Object object) {
return JSON.toJSONString(object);
}
以上是使用fastJson 写的一个util.完全可以满足我们一般json转化的需求,而且我们可以看到,相当的简洁. 测试结果如下.
* 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; } 一切别的常见问题看下面链接 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |