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;
}
//****************************请求参数结束*************************