首页 > 代码库 > 常用json序列化/反序列化技术对比测试

常用json序列化/反序列化技术对比测试

目前常用的json工具有:1、json-lib;2、jakson-mapper;3、fastjson。

 

下面对这三种工具的性能进行简单对比测试。

测试样本:一个126K的json文件,内容为json数组。

测试方法:反序列化,读取文件中的json转化为java对象。

 

测试代码如下:

 1     @Test
 2     public void testDeserialize() throws Exception {
 3         String dealer = "d:\\auto\\json\\100016109.js"; // 一个126k的json文件
 4         String content = FileUtils.readFileToString(new File(dealer));
 5 
 6         // 反序列化测试
 7 
 8         long start = System.currentTimeMillis();
 9         com.alibaba.fastjson.JSONArray array = com.alibaba.fastjson.JSONArray
10                 .parseArray(content);
11         long end = System.currentTimeMillis();
12 
13         System.out.println("com.alibaba.fastjson.JSONArray: " + (end - start));
14 
15         start = System.currentTimeMillis();
16         net.sf.json.JSONArray array2 = net.sf.json.JSONArray
17                 .fromObject(content);
18         end = System.currentTimeMillis();
19 
20         System.out.println("net.sf.json.JSONArray: " + (end - start));
21 
22         start = System.currentTimeMillis();
23         org.codehaus.jackson.map.ObjectMapper mapper = new org.codehaus.jackson.map.ObjectMapper();
24         List array3 = mapper.readValue(content, List.class);
25         end = System.currentTimeMillis();
26 
27         System.out.println("org.codehaus.jackson.map.ObjectMapper: "
28                 + (end - start));
29 
30     }

 

本机为奔腾双核2.5G、内存3G机器,运行测试方法10次,运行时间单位为毫秒。测试结果如下:

 

 

 

从上图的测试结果中看出,fastjson的性能明显优于jackson-mapper和json-lib,而jackson-mapper性能略优于json-lib。综上所述,使用fastjson还是很有优势的,在项目中应该优先考虑使用。

 

此外fastjson还支持超大数据集的序列化和反序列化。例如:

1         //读取json数组
2         JSONReader reader = new JSONReader(new FileReader("d:\\auto\\json\\100016109.js"));
3         reader.startArray();
4         while(reader.hasNext()){
5             VO vo = reader.readObject(VO.class);
6             //handle vo ...
7         }
8         reader.endArray();
9         reader.close();

具体参见:https://github.com/alibaba/fastjson/wiki/Stream-api

 

附上fastjson的maven依赖:

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.1.39</version>
        </dependency>