最近要用到json数据,于是g了一下,看到有json-lib直接把list可以转换成json格式,但是要加入好多jar包。于是自己就组装了一个json格式的数据,和解析的进行了测试,结果发现自己组装的还比用json-lib的快。组装部分代码如下面粗体所示。
package mxr.action;
import java.util.*;
import mxr.model.*;
import net.sf.json.*;
public class GetP {
public static void main(String[] args) {
String s=new GetP().parseList(getPesrsons());
// System.out.println(s);
}
public String createJson(List l){
int i=0;
int last=l.size();
StringBuffer sb=new StringBuffer();
long start=System.currentTimeMillis();
sb.append("[");
for(int j=0;i<last;j++){
Person p=(Person)l.get(j);
if (i == 0) {
sb.append("[{\"name\":");
sb.append("\"" + p.getName() + "\",");
sb.append("\"age\":");
sb.append("\"" + p.getAge() + "\",");
sb.append("\"address\":");
sb.append("\"" + p.getAddress() + "\",");
sb.append("\"tel\":");
sb.append("\"" + p.getTel() + "\"}");
if(i == (last -1))
sb.append("]");
} else if (i == (last - 1)) {
sb.append(",{\"name\":");
sb.append("\"" + p.getName() + "\",");
sb.append("\"age\":");
sb.append("\"" +p.getAge() + "\",");
sb.append("\"address\":");
sb.append("\"" + p.getAddress() + "\",");
sb.append("\"tel\":");
sb.append("\"" + p.getTel() + "\"}]");
} else {
sb.append(",{\"name\":");
sb.append("\"" + p.getName() + "\",");
sb.append("\"age\":");
sb.append("\"" + p.getAge() + "\",");
sb.append("\"address\":");
sb.append("\"" + p.getAddress() + "\",");
sb.append("\"tel\":");
sb.append("\"" + p.getTel() + "\"}");
}
i++;
}
sb.append("]");
long end=System.currentTimeMillis();
System.out.println("create json string:"+(end-start));
return sb.toString();
}
public String parseList(List list){
String str="";
long start=System.currentTimeMillis();
str=JSONArray.fromObject(list).toString();
long end=System.currentTimeMillis();
System.out.println("parseList use total:"+(end-start));
return str;
}
public static List getPesrsons(){
List l=new ArrayList();
for(int i=0;i<10000;i++){
Person p=new Person();
p.setAddress("aaaaa"+i);
p.setAge(18+i);
p.setName("aaaaa"+i);
p.setTel("aaaaaa"+i);
l.add(p);
}
return l;
}
}