緣由:前端
前端傳遞的數組過於複雜,卻是出現這種問題,前端採用vue axios,發送請求,後端java接收代碼,實現先後端分離vue
後端就收fastjson接收json,進行業務處理,後端Controller情況:java
1 /** 2 * 3 * <p> 4 * <p>添加訂單 5 * 6 * @return Object 7 */ 8 @ResponseBody 9 @RequestMapping(value = "/addOrder", // 10 method = RequestMethod.POST) 11 public Object addOrder(@RequestBody BaseSingleList baseSingleList) { 12 13 return orderService.addOrder(baseSingleList); 14 15 }
前端發送json樣式ios
1 { 2 "singleOrderList":[ 3 { 4 "orderName":"唐1", 5 "orderPhone":"13245124512", 6 "contact":"送", 7 "telephony":"7845120231111", 8 "provinceId":31, 9 "cityId":3101, 10 "regionId":310108, 11 "address":"默認添加唐", 12 "userId":"c6f53705451b497580ef093c0ff5", 13 "serieId":"1", 14 "trueTime":"2018-04-27", 15 "overTime":"2019-04-27", 16 "monthlyRent":6000, 17 "dateCount":12, 18 "packageId":"3e449fb4b4a489fce1475c4577fb6", 19 "applicationArea":"ssswww", 20 "total":"219000", 21 "ModularIdNum":[ 22 { 23 "itemId":"9b744dc99e2904d96ab1af5", 24 "modularNum":3 25 } 26 ] 27 }, 28 { 29 "orderName":"唐1", 30 "orderPhone":"13245124512", 31 "contact":"送", 32 "telephony":"7845120231111", 33 "provinceId":31, 34 "cityId":3101, 35 "regionId":310108, 36 "address":"默認添加唐", 37 "userId":"b4f13b97580ef093c0ff5", 38 "serieId":"1", 39 "trueTime":"2018-04-27", 40 "overTime":"2019-04-27", 41 "monthlyRent":6000, 42 "dateCount":12, 43 "packageId":"3b4b4a489fce1475c4577fb6", 44 "applicationArea":"ssswww", 45 "total":"219000", 46 "ModularIdNum":[ 47 { 48 "itemId":"09932da9b744dc99e295", 49 "modularNum":3 50 } 51 ] 52 } 53 ] 54 }
解決方案:json
controller正常傳入數據,在serviceImpl層中對數據進行分解和從新發送業務邏輯:axios
(1)當數據傳入是JsonObject,用以下方法傳遞後端
1 /** 2 * 下訂單 3 * 4 * @param baseSingleList 5 * @return Object 6 */ 7 @Override 8 public Object addOrder(BaseSingleList baseSingleList) { 9 10 String lineArray = JSONArray.toJSONString(baseSingleList); 11 HashMap parseMap = JSON.parseObject(lineArray,HashMap.class); 12 13 List<SingleOrder> singleOrderList = JSON.parseArray(JSON.parseObject(lineArray).getString("singleOrderList"),SingleOrder.class); 14 15 for(SingleOrder singleOrder : singleOrderList){ 16 17 System.out.println(singleOrder.getUserId()); 18 } 19 }
(2)當數據傳入是Map時數組
1 /** 2 * 下訂單 3 * 4 * @param baseSingleList 5 * @return Object 6 */ 7 @Override 8 public Object addOrder(BaseSingleList baseSingleList) { 9 10 11 12 Map<String, Object> map = new HashMap<String, Object>(); 13 map.put("count", 2); 14 map.put("studentList", baseSingleList); 15 String json = JSON.toJSONString(map, true); 16 17 18 HashMap parseMap = JSON.parseObject(json, HashMap.class); 19 List<BaseSingleList> studentList1 = (List<BaseSingleList>) parseMap.get("baseSingleList"); 20 21 for (SingleOrder singleOrder : singleOrderList) { 22 23 System.out.println(singleOrder.getUserId()); 24 } 25 26 }
參考文獻 :app
https://blog.csdn.net/jeffleo/article/details/73612224前後端分離