我们常用的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。