| 
                        副标题[/!--empirenews.page--]
                          前言 
在restful风格流行的今天,json想必大家都不陌生。JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。  易于人阅读和编写。同时也易于机器解析和生成。在Java中,有很多json库,比如阿里巴巴的fastjson,谷歌的gson等等。那么,它们之间的性能表现如何呢?下面就通过实际例子分析下。 
  
原创声明 
本文首发于头条号【Happyjava】https://www.toutiao.com/c/user/85644464579/  欢迎转载,但须保留此段声明。 
用于比较的库 
用4中json库进行比较,分别是:FastJson,Gson,Jackson 
比较方式 
主要从开发中常用的几方面入手比较,分别如下: 
1、Java对象转化成为json字符串 
2、集合对象转化成为json字符串 
3、字符串转化成json对象 
4、字符串转化成java对象 
5、字符串转化为json数组 
6、字符串转化成为java集合 
每种操作,通过计算重复执行100 0000次进行性能比较。 
结果对比 
 
从结果看,fastjson的速度是遥遥领先的,gson的速度最慢,这也是为什么被戏称为“龟son“的原因。 
三个库的对比 
jackson是SpringMVC默认的json转化库,有良好的稳定性的同时,也有不错的性能。 
fastjson速度是最快的,但是版本迭代快,但是经常爆出存在漏洞,如果是比较保守的项目,如银行政府项目,是不推荐使用的。但是,fastjson的api设计,本人认为是所有json库里最优雅方便的。 
gson是谷歌出品,但是速度上就比较慢。 
Java对象 
Person.java 
- @Data 
 - public class Person {  
 -  private Integer id;  
 -  private String username; 
 -  private Integer age; 
 -  private String address; 
 - } 
 
  
fastjson测试 
使用的是fastjson1.2.58版本,也是目前最新的fastjson版本。 
测试代码如下: 
- public static void main(String[] args) { 
 -  // 构造对象 
 -  Person person = new Person(); 
 -  person.setId(99999); 
 -  person.setUsername("Happyjava"); 
 -  person.setAddress("广东省广州市,上海市,北京市,广东省深圳市,浙江省杭州市,"); 
 -  person.setAge(100); 
 -  
 -  // Java对象转化成为json字符串 
 -  long start = System.currentTimeMillis(); 
 -  for (int i = 0; i < 1000000; i++) { 
 -  String string = JSON.toJSONString(person); 
 -  } 
 -  System.out.println("Java对象转化成为json字符串耗时:" + (System.currentTimeMillis() - start) + "ms"); 
 -  
 -  // 集合对象转化成为json字符串 
 -  List<Person> list = new ArrayList<>(); 
 -  for (int i = 0; i < 100; i++) { 
 -  list.add(person); 
 -  } 
 -  start = System.currentTimeMillis(); 
 -  for (int i = 0; i < 1000000; i++) { 
 -  String string = JSON.toJSONString(list); 
 -  } 
 -  System.out.println("集合对象转化成为json字符串耗时:" + (System.currentTimeMillis() - start) + "ms"); 
 -  
 -  // 字符串转化成json对象 
 -  start = System.currentTimeMillis(); 
 -  String jsonsString = JSON.toJSONString(person); 
 -  for (int i = 0; i < 1000000; i++) { 
 -  JSONObject jsonObject = JSON.parseObject(jsonsString); 
 -  } 
 -  System.out.println("字符串转化成json对象耗时:" + (System.currentTimeMillis() - start) + "ms"); 
 -  
 -  // 字符串转化成java对象 
 -  start = System.currentTimeMillis(); 
 -  for (int i = 0; i < 1000000; i++) { 
 -  Person person1 = JSON.parseObject(jsonsString, Person.class); 
 -  } 
 -  System.out.println("字符串转化成java对象耗时:" + (System.currentTimeMillis() - start) + "ms"); 
 -  
 -  // 字符串转化为json数组 
 -  start = System.currentTimeMillis(); 
 -  String jsonArrayStr = JSON.toJSONString(list); 
 -  for (int i = 0; i < 1000000; i++) { 
 -  JSONArray objects = JSON.parseArray(jsonArrayStr); 
 -  } 
 -  System.out.println("字符串转化为json数组耗时:" + (System.currentTimeMillis() - start) + "ms"); 
 -  
 -  // 字符串转化成为java集合 
 -  start = System.currentTimeMillis(); 
 -  for (int i = 0; i < 1000000; i++) { 
 -  List<Person> list1 = JSON.parseArray(jsonArrayStr, Person.class); 
 -  } 
 -  System.out.println("字符串转化成为java集合耗时:" + (System.currentTimeMillis() - start) + "ms"); 
 - } 
 
  
                                                (编辑:我爱故事小小网_铜陵站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |