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

时间:2023-09-13 23:16:14

错误现象:

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

错误分析及其解答:

JSONStringer可以直接嵌套JSONArray,JSONArray可以作为
JSONStringer的值。
我错误的原因是本质是:
JSONArray存放的是JSONStringer,
正确的是存放JSONObject。
拼接JSONStringer出现的不正确的情况。
代码如下:
     /**
* 方法名: insertCheckStockDetails(String apiname, List<Map<String,String>>checkStockDetailList)
* 功 能:上传盘点数量
* 参 数:-
* 返回值: -
*/
public String insertCheckStockDetails(String apiname, List<Map<String,String>>checkStockDetailList)
{
//应用级请求参数
JSONStringer appLvlRequestJson;
//应用级请求参数·盘点明细List
//JSONStringer checkStockDetailListJosn = null;;
//追加系统级请求参数
JSONStringer sysLvlRequestJson = null;
//结果集
String strResponse; //结果ArrayList
List<Map<String,String>> checkDetailArrayList = new ArrayList<Map<String,String>>();
try {
//应用级请求参数中的check_stock_detail_list设定属性值
Iterator detailIterator = checkStockDetailList.iterator(); JSONArray checkStockDetailJSONArray = new JSONArray();
while(detailIterator.hasNext()){
Map map = (Map) detailIterator.next(); JSONObject jSONObject = new JSONObject(); jSONObject.put("check_id", map.get("checkid")); jSONObject.put("goods_id", map.get("goodsid")); jSONObject.put("check_amount", map.get("checkamount")); checkStockDetailJSONArray.put(jSONObject);
// JSONStringer checkStockDetailListJosn = new JSONStringer();
// checkStockDetailListJosn.object()
// .key("check_id").value(map.get("checkid"))
// .key("goods_id").value(map.get("goodsid"))
// .key("check_amount").value(map.get("checkamount"))
// .endObject();
// checkStockDetailJSONArray.put(checkStockDetailListJosn);
} //应用级请求参数
appLvlRequestJson = new JSONStringer().object().key("check_stock_detail_list").value(checkStockDetailJSONArray).endObject(); sysLvlRequestJson=SetParamDao.SetJsonparam(apiname,appLvlRequestJson);
} catch (JSONException e1) {
e1.printStackTrace();
}
strResponse=SetParamDao.SetJsonStringCode(sysLvlRequestJson); //1000:没有数据; 500:错误; 999:执行成功; 400:Josn解析格式不正确
return strResponse;
}