问题描述
原因分析:
for(int j=0;j<fhorderList.get(j).getGoodsInfos().size();j++) {spmx.addProperty("erp_code", fhorderList.get(j).getGoodsInfos().get(j).getErp_code());spmx.addProperty("num", fhorderList.get(j).getGoodsInfos().get(j).getNum());dataArray.add(spmx);
}jsonObject.add("goodsInfo", dataArray);
这里的问题在于,您在循环条件中使用了fhorderList.get(j),而在循环体内部也使用了相同的j来获取GoodsInfos中的元素。这会导致在第一次迭代(j=0)时正确执行,但在第二次迭代(j=1)时,如果fhorderList.get(1)不存在(例如当fhorderList的大小为1时),就会抛出IndexOutOfBoundsException异常。
正确的做法应该是先获取当前订单的GoodsInfos,然后遍历这个GoodsInfos列表。以下是修正后的代码:
// 获取当前订单的商品信息List<GoodsInfo> goodsInfos = fhorderList.get(i).getGoodsInfos();// 循环添加订单明细for (int j = 0; j < goodsInfos.size(); j++) {JsonObject spmx = new JsonObject(); // 每次循环创建新的JsonObject对象spmx.addProperty("erp_code", goodsInfos.get(j).getErp_code());spmx.addProperty("num", goodsInfos.get(j).getNum());dataArray.add(spmx);}// 添加商品信息数组到jsonObjectjsonObject.add("goodsInfo", dataArray);