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

时间:2014-07-22 23:15:13   收藏:0   阅读:640

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

 

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

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

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

 

测试代码如下:

mamicode.com,码迷
 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     }
mamicode.com,码迷

 

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

 

mamicode.com,码迷

 

mamicode.com,码迷

 

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

 

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

mamicode.com,码迷
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();
mamicode.com,码迷

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

 

附上fastjson的maven依赖:

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

 

 

 

 

常用json序列化/反序列化技术对比测试,码迷,mamicode.com

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2
迷上了代码!