常用json序列化/反序列化技术对比测试
时间:2014-07-22 23:15:13
收藏:0
阅读:665
目前常用的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>
评论(0)