拼接JSONStringer出现的不正确的情况。

错误现象:

错误分析及其解答:

JSONStringer可以直接嵌套JSONArray,JSONArray可以作为
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     }
View Code
 
原文地址:https://www.cnblogs.com/YangBinChina/p/3421728.html