import java.io.StringReader; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONReader; public class TestJson { public static void main(String[] args) { //创建10万条测试数据 JSONArray jsonArray = new JSONArray(); for(int i=0;i<100000;i++){ JSONObject jsonObject = new JSONObject(); Map<String, Object> map = new HashMap<String, Object>(); map.put("MERCHCODE", "MERCHCODE"+i); map.put("DEVCODE", "DEVCODE"+i); map.put("TRANSTIME", "TRANSTIME"+i); map.put("TRANSAMT", 100+i); map.put("TRANSTYPE", "TRANSTYPE"+i); map.put("TRANSSTATUS", "TRANSSTATUS"+i); jsonObject.putAll(map); jsonArray.add(i, jsonObject); } //获取开始时间 long startTime=System.currentTimeMillis(); //返回List List<Map<String, Object>> rsList = new ArrayList<Map<String, Object>>(); /*第一种:将每个json数组元素转化为json对象,遍历添加到List中 * 程序运行时间: 4079ms总数:100000 * 程序运行时间: 400ms 总数:100 * 程序运行时间: 460ms总数:20 * JSONArray array=JSON.parseArray(jsonArray.toJSONString()); for (int i = 0; i < array.size(); i++) { JSONObject object2 = array.getJSONObject(i);//json数组对象 Map<String, Object> map2 = new HashMap<String, Object>(); for (Object k : object2.keySet()) { Object v = object2.get(k); map2.put(k.toString(), v); } rsList.add(map2); }*/ /* 第二种:对象化,对返回字段进行转义,可自定义返回字段及类型 * 程序运行时间: 4729ms 总数:100000 * 程序运行时间: 697ms 总数:100 * 程序运行时间: 605ms总数:20 * List<HisDataReturnDto> datas=JSON.parseArray(jsonArray.toJSONString(), HisDataReturnDto.class); if(null != datas && datas.size() != 0){ for(HisDataReturnDto data:datas){ Map<String,Object> map = new HashMap<String,Object>(); map.put("merchName", data.getMERCHNAME()); map.put("merchCode", data.getMERCHCODE()); map.put("devCode", data.getDEVCODE()); map.put("transTime",data.getTRANSTIME()); map.put("transAmt", data.getTRANSAMT()); map.put("transType", data.getTRANSTYPE()); map.put("transStatus",data.getTRANSSTATUS()); rsList.add(map); } }*/ /*第三种:读取流方式,数据量较大时很有优势 * 程序运行时间: 2602ms 总数:100000 * 程序运行时间: 447ms 总数:100 * 程序运行时间: 486ms总数:20 */ JSONReader reader = new JSONReader(new StringReader(jsonArray.toJSONString())); reader.startArray(); Map<String, Object> map = new HashMap<String, Object>(); while (reader.hasNext()) { reader.startObject(); while (reader.hasNext()) { String arrayListItemKey = reader.readString(); String arrayListItemValue = reader.readObject(); map.put(arrayListItemKey, arrayListItemValue); } rsList.add(map); reader.endObject(); } reader.endArray(); reader.close(); //获取结束时间 long endTime=System.currentTimeMillis(); System.out.println("程序运行时间: "+(endTime-startTime)+"ms"); System.out.println("总数:"+rsList.size()); }
//说明:程序运行时间受系统限制,仅供参考;
} import java.io.Serializable; public class HisDataReturnDto implements Serializable { private static final long serialVersionUID = 7812345985709979623L; //****************************请求参数开始************************* /* * 翻页方向 */ private String MERCHNAME; /* * 是否需要总记录数 */ private String MERCHCODE; /* * 机具终端编 */ private String DEVCODE; /* * 交易时间开始 */ private String TRANSTIME; /* * 交易时间结束 */ private Double TRANSAMT; private String TRANSTYPE; /* * 是否需要总记录数 */ private String TRANSSTATUS; public String getMERCHNAME() { return MERCHNAME; } public void setMERCHNAME(String mERCHNAME) { MERCHNAME = mERCHNAME; } public String getMERCHCODE() { return MERCHCODE; } public void setMERCHCODE(String mERCHCODE) { MERCHCODE = mERCHCODE; } public String getDEVCODE() { return DEVCODE; } public void setDEVCODE(String dEVCODE) { DEVCODE = dEVCODE; } public String getTRANSTIME() { return TRANSTIME; } public void setTRANSTIME(String tRANSTIME) { TRANSTIME = tRANSTIME; } public Double getTRANSAMT() { return TRANSAMT; } public void setTRANSAMT(Double tRANSAMT) { TRANSAMT = tRANSAMT; } public String getTRANSTYPE() { return TRANSTYPE; } public void setTRANSTYPE(String tRANSTYPE) { TRANSTYPE = tRANSTYPE; } public String getTRANSSTATUS() { return TRANSSTATUS; } public void setTRANSSTATUS(String tRANSSTATUS) { TRANSSTATUS = tRANSSTATUS; } //****************************请求参数结束*************************