结论:在处理单个对象时gson占优,在处理大数据量(比如有10000个对象以上的List)时fastjson占有。
/** * <p><b>Description:</b> </p> * @author wangzhj * @date 2020年6月30日 */ public class T { public static void main(String[] args) { // DeptStaffModel md = new DeptStaffModel(); // md.setDeptName("名字"); // md.setId("ID"); // List<StaffQuartersModel> sqs = new ArrayList<StaffQuartersModel>(); // StaffQuartersModel sq = new StaffQuartersModel(); // sq.setIdNo("资质IDNo"); // sqs.add(sq); // md.setStaffList(sqs); // // DeptStaffVO vo = BeanCopierUtil.copy(md,DeptStaffVO::new,DeptStaffVO.class); // // System.out.println(JSONObject.toJSONString(vo)); StaffUserModel sm = new StaffUserModel(); sm.setEmail("sssss@dd.com"); sm.setBirthDate(new Date()); sm.setAnesthetist(1); sm.setWorkStartDate(new Date()); sm.setBiometricCode1("fdf"); sm.setBiometricCode2("cd2"); sm.setCmt("人民币"); sm.setCreater("system"); sm.setUserId("DFDFDFDFD"); sm.setStaffStateId("fddfsdfdfdsfds"); sm.setStaffSex("man"); sm.setStaffProfile("产生的辐射"); StaffSupplyModel sm1 = new StaffSupplyModel(); sm1.setCmt("1"); sm.setStaffSupply(sm1); DeptModel d1 = new DeptModel(); d1.setDeptName("门诊科"); List<DeptModel> d1s = new ArrayList<DeptModel>(); d1s.add(d1); sm.setDepts(d1s); WardModel w1 = new WardModel(); w1.setWardName("东病区");; List<WardModel> w1s = new ArrayList<WardModel>(); w1s.add(w1); sm.setWards(w1s); StaffUserModel sm2 = new StaffUserModel(); sm2.setEmail("sssss@dd.com"); sm2.setBirthDate(new Date()); sm2.setAnesthetist(1); sm2.setWorkStartDate(new Date()); sm2.setBiometricCode1("fdf"); sm2.setBiometricCode2("cd2"); sm2.setCmt("人民币"); sm2.setCreater("system"); sm2.setUserId("DFDFDFDFD"); sm2.setStaffStateId("fddfsdfdfdsfds"); sm2.setStaffSex("man"); sm2.setStaffProfile("产生的辐射"); StaffSupplyModel sm12 = new StaffSupplyModel(); sm12.setCmt("1"); sm2.setStaffSupply(sm12); // String jsonString = JSON.toJSONString(sm); // System.out.println("jsonString:" + jsonString); // // // // StaffUserVO sv = new StaffUserVO(); // sv = JSON.parseObject(jsonString, StaffUserVO.class); // // System.out.println(JSONObject.toJSONString(sv)); List<StaffUserModel> l1 = new ArrayList<StaffUserModel>(); l1.add(sm); l1.add(sm2); int max = 10000; for(int i = 0; i < max; i++) { StaffUserModel sma = new StaffUserModel(); sma.setEmail("sssss@dd.com"+i); sma.setBirthDate(new Date()); sma.setAnesthetist(i); sma.setWorkStartDate(new Date()); sma.setBiometricCode1("fdf"+i); sma.setBiometricCode2("cd2"+i); sma.setCmt("人民币"+i); sma.setCreater("system"+i); sma.setUserId("DFDFDFDFD"+i); sma.setStaffStateId("fddfsdfdfdsfds"+i); sma.setStaffSex("man"+i); sma.setStaffProfile("产生的辐射"+i); StaffSupplyModel sm1a = new StaffSupplyModel(); sm1a.setCmt("1"+i); sma.setStaffSupply(sm1); DeptModel d1a = new DeptModel(); d1a.setDeptName("门诊科"+i); List<DeptModel> d1sa = new ArrayList<DeptModel>(); d1sa.add(d1a); sma.setDepts(d1sa); WardModel w1a = new WardModel(); w1a.setWardName("东病区"+i);; List<WardModel> w1sa = new ArrayList<WardModel>(); w1sa.add(w1a); sma.setWards(w1sa); l1.add(sma); } // List<StaffUserVO> l2 = new ArrayList<StaffUserVO>(); // String jsonString2 = JSONArray.toJSONString(l1); // System.out.println("jsonString2:" + jsonString2); // l2 = JSON.parseArray(jsonString2, StaffUserVO.class); // System.out.println(JSONObject.toJSONString(l2)); System.out.println("----------------fastjson-------------------"); long start = System.currentTimeMillis(); StaffUserVO sv2 = BeanCopierUtil.copy(sm, null, StaffUserVO.class); long end = System.currentTimeMillis(); System.out.println("序列化再反序列化单个对象耗时:"+(end-start)); // System.out.println(JSONObject.toJSONString(sv2)); long start2 = System.currentTimeMillis(); List<StaffUserVO> l22 = BeanCopierUtil.copyListProperties(l1, StaffUserVO::new); long end2 = System.currentTimeMillis(); System.out.println("序列化再反序列化有"+max+"个对象的List耗时:"+(end2-start2)); // System.out.println(JSONObject.toJSONString(l22)); System.out.println("----------------gson-------------------"); long start3 = System.currentTimeMillis(); StaffUserVO sv3 = JsonHelper.fromJson(JsonHelper.toJson(sm), StaffUserVO.class); long end3 = System.currentTimeMillis(); System.out.println("序列化再反序列化单个对象耗时:"+(end3-start3)); // System.out.println(JSONObject.toJSONString(sv3)); long start4 = System.currentTimeMillis(); List<StaffUserVO> l23 = JsonHelper.fromJsonList(JsonHelper.toJson(l1), StaffUserVO[].class ); long end4 = System.currentTimeMillis(); System.out.println("序列化再反序列化有"+max+"个对象的List耗时:"+(end4-start4)); // System.out.println(JSONObject.toJSONString(l23)); } }以下为测试截图:耗时单位为毫秒