日期:2014-05-16  浏览次数:20448 次

三种json处理java类库:json-lib,smart json,jackson json 性能对比测试

json格式非常灵活,希望用在变量传递上,json分析处理类库网上很多,以前用过json-lib.jar也没太注意,后来有需求要求分析速度非常快,而且处理的json格式兼容性非常强,于是遇到了jackson json 及smatt json的相关介绍。由于我只需要简单的json格式分析功能,不需要太复杂的格式化到Bean、POJO等功能,所以就这几个类库做了个测试:

?

jsp页面测试代码

<%@page contentType="text/html;charset=GBK" import="net.xerllent.doc.convert.*,net.sf.json.* "%>
<%@page import="org.apache.commons.beanutils.PropertyUtils"%>
<%@page import="net.xerllent.doc.Config"%>
<%@page import="java.util.Date"%>
<%@page import="java.sql.Timestamp"%>
<%@page import="org.codehaus.jackson.JsonParser"%>
<%@page import="org.codehaus.jackson.JsonFactory"%>
<%@page import="org.codehaus.jackson.JsonNode"%>
<%@page import="java.util.Map"%>
<%@page import="org.codehaus.jackson.map.ObjectMapper"%>
<%@page import="net.minidev.json.JSONValue"%>
<%
try {

	long l0 =0l;int k=1000000;
	String json = "{\"name\":\"jsjjon\",\"age\":435,\"param3\":\"赛灵通项目(Xerllent Projects)是一项基于j2ee技术的企业信息化系统研发计划,这项计划的目的是让更多企业享受简洁易用、安全可靠、功能强大的信息化软件平台\",\"param4\":435,\"param5\":435,\"param6\" : 435, \"param7\":435, \"parasdfdsfam8\":\"sdjfldsjfdsljfldsjflkdsfdslkjflsdjfju4385\"}";

	out.print("smart json test:<br>");
	l0=System.currentTimeMillis();
	Object obj1;net.minidev.json.JSONObject obj3=null;
	for(int i=0;i<k;i++){    
		obj1=JSONValue.parse(json);
		obj3=(net.minidev.json.JSONObject)obj1;
	}    
	out.print("name:"+obj3.get("name")+"<br>");
	out.print("age:"+obj3.get("age")+"<br>");
	out.println("smart json cost milli seconds:"+(System.currentTimeMillis()-l0));    
	out.print("<br>");


	out.print("<br>");	 
	out.print("<br>"); 
	
	
	out.print("net.sf.json lib test:<br>");
	l0=System.currentTimeMillis();
	JSONObject obj=null;
	for(int i=0;i<k;i++){    
		obj=JSONObject.fromObject(json);
	}    
	out.print("name:"+obj.get("name")+"<br>");
	out.print("age:"+obj.get("age")+"<br>");
	out.println("net.sf.json lib cost milli seconds:"+(System.currentTimeMillis()-l0));    
	out.print("<br>");


	out.print("<br>");
	out.print("<br>");

	out.print("jackson json lib test:<br>");
	l0=System.currentTimeMillis();
	ObjectMapper m=null;JsonNode rootNode=null;
	for(int i=0;i<k;i++){    
		m = new ObjectMapper();
		rootNode = m.readValue(json, JsonNode.class);
	}
	out.print("name:"+rootNode.get("name").asText()+"<br>");
	out.print("age:"+rootNode.get("age").asText()+"<br>");
	out.println("net.sf.json lib cost milli seconds:"+(System.currentTimeMillis()-l0));    
	out.print("<br>");
	
	
}
catch (Exception ex) {
	System.err.println("aaaaaaaaa:"+ex);
}

?

?

测试结果:100万次测试结果:

?

smart json test:
name:jsjjon
age:435
smart json cost milli seconds:3515 


net.sf.json lib test:
name:jsjjon
age:435
net.sf.json lib cost milli seconds:21250 


jackson json lib test:
name:jsjjon
age:435
net.sf.json lib cost milli seconds:19391 

?

?

测试结论:

?

? 看来smart json 果然快,而且json格式兼容性特强,甚至有些Bt,但其他附加功能还不叫弱,不过对我来说已经够了。先用着吧。

?

相关文章:

?

1 . smart json性能对比分析: http://code.google.com/p/json-smart/wiki/Benchmark

2. json工具性能比较:json-lib和jackson进行Java对象到json字符串序列化 http://hjg1988.iteye.com/blog/561368

?