错误现象:
错误分析及其解答:
JSONStringer可以直接嵌套JSONArray,JSONArray可以作为
JSONStringer的值。
我错误的原因是本质是:
JSONArray存放的是JSONStringer,
正确的是存放JSONObject。
JSONStringer的值。
我错误的原因是本质是:
JSONArray存放的是JSONStringer,
正确的是存放JSONObject。
代码如下:
1 /** 2 * 方法名: insertCheckStockDetails(String apiname, List<Map<String,String>>checkStockDetailList) 3 * 功 能:上传盘点数量 4 * 参 数:- 5 * 返回值: - 6 */ 7 public String insertCheckStockDetails(String apiname, List<Map<String,String>>checkStockDetailList) 8 { 9 //应用级请求参数 10 JSONStringer appLvlRequestJson; 11 //应用级请求参数·盘点明细List 12 //JSONStringer checkStockDetailListJosn = null;; 13 //追加系统级请求参数 14 JSONStringer sysLvlRequestJson = null; 15 //结果集 16 String strResponse; 17 18 //结果ArrayList 19 List<Map<String,String>> checkDetailArrayList = new ArrayList<Map<String,String>>(); 20 try { 21 //应用级请求参数中的check_stock_detail_list设定属性值 22 Iterator detailIterator = checkStockDetailList.iterator(); 23 24 JSONArray checkStockDetailJSONArray = new JSONArray(); 25 while(detailIterator.hasNext()){ 26 Map map = (Map) detailIterator.next(); 27 28 JSONObject jSONObject = new JSONObject(); 29 30 jSONObject.put("check_id", map.get("checkid")); 31 32 jSONObject.put("goods_id", map.get("goodsid")); 33 34 jSONObject.put("check_amount", map.get("checkamount")); 35 36 checkStockDetailJSONArray.put(jSONObject); 37 // JSONStringer checkStockDetailListJosn = new JSONStringer(); 38 // checkStockDetailListJosn.object() 39 // .key("check_id").value(map.get("checkid")) 40 // .key("goods_id").value(map.get("goodsid")) 41 // .key("check_amount").value(map.get("checkamount")) 42 // .endObject(); 43 // checkStockDetailJSONArray.put(checkStockDetailListJosn); 44 } 45 46 //应用级请求参数 47 appLvlRequestJson = new JSONStringer().object().key("check_stock_detail_list").value(checkStockDetailJSONArray).endObject(); 48 49 sysLvlRequestJson=SetParamDao.SetJsonparam(apiname,appLvlRequestJson); 50 } catch (JSONException e1) { 51 e1.printStackTrace(); 52 } 53 strResponse=SetParamDao.SetJsonStringCode(sysLvlRequestJson); 54 55 //1000:没有数据; 500:错误; 999:执行成功; 400:Josn解析格式不正确 56 return strResponse; 57 }