Three ways to convert large data volume json array into List output

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) {
		//Create 100,000 test data
		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);
		}
		//get start time
		long startTime=System.currentTimeMillis();   
		
		//return List
		List<Map<String, Object>> rsList = new ArrayList<Map<String, Object>>();
		/*The first type: convert each json array element into a json object, traverse and add it to the List
		 * Program running time: 4079ms Total: 100000
		 * Program running time: 400ms Total: 100
		 * Program running time: 460ms Total: 20
		 *
		JSONArray array=JSON.parseArray(jsonArray.toJSONString());
		for (int i = 0; i < array.size(); i++) {
            JSONObject object2 = array.getJSONObject(i);//json array object
            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);
      }*/
      
      
		/* The second: objectification, escape the return field, and customize the return field and type   
		 * Program running time: 4729ms Total: 100000
		 * Program running time: 697ms Total: 100
		 * Program running time: 605ms Total: 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);
			}
		}*/
		
		/*The third: read stream method, which is advantageous when the amount of data is large
		 * Program running time: 2602ms Total: 100000
		 * Program running time: 447ms Total: 100
		 * Program running time: 486ms Total: 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();
	    //get the end time
	    long endTime=System.currentTimeMillis();
	    System.out.println("Program running time: "+(endTime-startTime)+"ms");
	    System.out.println("总数:"+rsList.size());
	}
//Description: The running time of the program is limited by the system and is for reference only;
}




import java.io.Serializable;

public class HisDataReturnDto implements Serializable {

    private static final long serialVersionUID = 7812345985709979623L;
    //****************************Request parameters start **************** ********
    /*
	 * Page turning direction
	 */
    private String MERCHNAME;
    /*
	 * Do you need the total number of records
	 */
    private String MERCHCODE;
    /*
	 * Machine tool terminal
	 */
    private String DEVCODE;
    /*
	 * Trading hours begin
	 */
    private String TRANSTIME;
    /*
	 * End of trading hours
	 */
    private Double TRANSAMT;
    
    private String TRANSTYPE;
    /*
	 * Do you need the total number of records
	 */
    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;
	}
    
  //****************************End of request parameters**************** ********

 

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=326849307&siteId=291194637