我们常用的json工具有Google的Gson,JackJson,阿里的fastjson,这里我们加入一个IBM的解析工具。看代码
String content = resultSearch.getResponseContent(); long t1=System.currentTimeMillis(); net.sf.json.JSONObject json = net.sf.json.JSONObject.fromObject(content); if (json.get("searchResults") != null) { net.sf.json.JSONArray obj = net.sf.json.JSONArray.fromObject(json.get("searchResults") + ""); for (int i = 0; i < obj.size(); i++) { // } System.out.println("obj.size="+obj.size()); } long t2=System.currentTimeMillis(); System.out.println(t2-t1); long t3=System.currentTimeMillis(); com.alibaba.fastjson.JSONObject responseJson = com.alibaba.fastjson.JSONObject.parseObject(content); if (json.get("searchResults") != null) { com.alibaba.fastjson.JSONArray obj = com.alibaba.fastjson.JSONArray.parseArray(responseJson.get("searchResults") + ""); for (int i = 0; i < obj.size(); i++) { // } System.out.println("obj.size="+obj.size()); } long t4=System.currentTimeMillis(); System.out.println(t4-t3); long t5=System.currentTimeMillis(); com.ibm.json.java.JSONObject jsn = com.ibm.json.java.JSONObject.parse(content); if (json.get("searchResults") != null) { com.ibm.json.java.JSONArray obj = com.ibm.json.java.JSONArray.parse(jsn.get("searchResults") + ""); for (int i = 0; i < obj.size(); i++) { // } System.out.println("obj.size="+obj.size()); } long t6=System.currentTimeMillis(); System.out.println(t6-t5); long t7=System.currentTimeMillis(); Gson gson = new Gson(); JsonElement element=gson.toJsonTree(content); com.google.gson.JsonObject jsonObject= element.getAsJsonObject(); if (jsonObject.get("searchResults") != null) { com.google.gson.JsonArray obj = jsonObject.get("searchResults").getAsJsonArray(); for (int i = 0; i < obj.size(); i++) { // } System.out.println("obj.size="+obj.size()); } long t8=System.currentTimeMillis(); System.out.println(t8-t7);
这里的运行结果是:
obj.size=5679
13872
obj.size=5679
381
obj.size=5679
298
而Gson则没有解析成功,抛了个异常,可能写法有问题。
这样来看,阿里的fastjson及IBM的json解析工具在速度上远远快与JackJson。