注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

罔少年

QQ 332256483

 
 
 

日志

 
 

FastJson及Gson对比  

2017-01-18 15:05:16|  分类: android |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
以前项目都用Google的Gson,后来偶然发现了阿里的FastJson,报着支持国产的态度了百度了解了下。

FastJson
由阿里巴巴公司用java开发,对实体属性是忽略大小写
下载地址 http://repo1.maven.org/maven2/com/alibaba/fastjson/1.2.14/
 /**
* 对象转化为json
*/
public
static String objectToJsonForFastJson(Object object) {
if (object == null) {
return "";
}
try {
return JSON.toJSONString(object);
}
catch (JSONException e) {
}
catch (Exception e) {
}
return "";
}
 /**
* json转化为对象
*/
public static <T> T jsonToObjectForFastJson(String jsonData, Class<T> clazz) {
if (TextUtils.isEmpty(jsonData)) {
return null;
}
try {
return parseObject(jsonData, clazz);
}
catch (Exception e) {
}
return null;
}
  /**
*json转化为List
*/
public static List jsonToListForFastJson(String jsonData) {
if (TextUtils.isEmpty(jsonData)) {
return null;
}
List arrayList
= null;
try {
arrayList
= parseObject(jsonData,new TypeReference<ArrayList>(){});
}
catch (Exception e) {
}
return arrayList;

}
  /**
*json转化为Map
*/
public static Map jsonToMapForFastJson(String jsonData){
if (TextUtils.isEmpty(jsonData)) {
return null;
}
Map
map = null;
try{
map
= parseObject(jsonData,new TypeReference<Map>(){});
}
catch (Exception e){
e.printStackTrace();
}
return map;
}


GSON

Gson由谷歌研发,可以把Java对象转换成JSON,也可以把JSON字符串转换成一个相等的Java对象。Gson支持任意复杂Java对象包括没有源代码的对象。

使用方式  build.gradle 中配置 compile 'com.google.code.gson:gson:2.4'
  /**
* 对象转化为json对象

*/
public static String objectToJsonForGson(Object object) {
if (object == null) {
return "";
}
Gson gson;
try {
gson
= new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
return gson.toJson(object);
}
catch (Exception e) {
e.printStackTrace();
}
return "";
}
   /**
* json转化为对象

*/
public static <T> T jsonToObjectForGson(String jsonData, Class<T> clazz) {
if (TextUtils.isEmpty(jsonData)) {
return null;
}
T finalResult
= null;
try {
Gson gson
= new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
finalResult
= gson.fromJson(jsonData, clazz);
}
catch (Exception e) {
e.printStackTrace();
}
return finalResult;
}
  /**
*json转化为集合
*/
public static List jsonToListForForGson(String jsonData) {
if (TextUtils.isEmpty(jsonData)) {
return null;
}
List list
= null;
try {
Type listType
= new TypeToken<ArrayList>() {
}.getType();
Gson gson
= new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
list
= gson.fromJson(jsonData, listType);
}
catch (Exception e) {
}
return list;
}
  /**
*json转化为Map
*/
public static Map jsonToMapForForGson(String jsonData){
if (TextUtils.isEmpty(jsonData)) {
return null;
}
Map map
= null;
try {
Type listType
= new TypeToken<Map>() {
}.getType();
Gson gson
= new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
map
= gson.fromJson(jsonData, listType);
}
catch (Exception e) {
}
return map;
}


对FastJson和GSON测试

   List<Person> personList=new ArrayList<>();
int testMaxCount=1000;//测试的最大数据条数
//添加测试数据
for(int i=0;i<testMaxCount;i++){
Person person
=new Person();
person.setAge(i);
person.setName(String.valueOf(i));
personList.add(person);
}

   //FastJson生成json数据        
long start=System.currentTimeMillis();
String jsonData
=JsonUtils.objectToJsonForFastJson(personList);
long end=System.currentTimeMillis();
Log.e(
"MainActivity","FastJson生成json数据 cost time---->"+(end-start));

//FastJson解析json数据
start=System.currentTimeMillis();
List
<Person> tempPersons=JsonUtils.jsonToListForFastJson(jsonData);
end
=System.currentTimeMillis();
Log.e(
"MainActivity","FastJson解析json数据 cost time---->"+(end-start));

//Gson生成json数据
start=System.currentTimeMillis();
jsonData
=JsonUtils.objectToJsonForGson(personList);
end
=System.currentTimeMillis();
Log.e(
"MainActivity","Gson生成json数据 cost time---->"+(end-start));

//Gson解析json数据
start=System.currentTimeMillis();
List
<Person> tempPersons1=JsonUtils.jsonToListForForGson(jsonData);
end
=System.currentTimeMillis();
Log.e(
"MainActivity","Gson解析json数据 cost time---->"+(end-start));

测试结果:
单位毫秒(执行时间)

两者转换性能对比:1000条    10000条  100000条  200000条

fastJson :           45           289         4010        8396

Gson     :           60           724         4071        8803

 

两者解析性能对比:1000条    10000条  100000条  200000条

fastJson :           55           552        3826        8638

Gson     :           45           465         5942        9668

总结:在数据量比较小的情况下,两者性能相差无几,在数据量比较大的情况下FastJson还是有优势的。



原文 支持原创,版权所有
  评论这张
 
阅读(24)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018