json数组索引重复

时间:2017-07-06 11:45:35

标签: java android arrays json

我正在创建一个json数组并从arraylist中获取数据。 我的问题是,当我在json中保存数据时,它只会将arraylist的最后数据保存到每个索引。

这是我的代码:

 JSONArray ItemsRequiredobArr=new JSONArray();

            JSONObject ItemsRequiredob=new JSONObject();

            for(int ii=0;ii<StocklistAdapter.listItemN.size();ii++){


                ItemsRequiredob.put("ItemID",StocklistAdapter.itemIdN.get(ii));
                ItemsRequiredob.put("StockCode",StocklistAdapter.listItemN.get(ii));
                Toast.makeText(this, "StockCode"+StocklistAdapter.listItemN.get(ii), Toast.LENGTH_SHORT).show();
                ItemsRequiredob.put("Description",StocklistAdapter.listAddressN.get(ii));
                ItemsRequiredob.put("Quantity",StocklistAdapter.QuaN.get(ii));

                ItemsRequiredobArr.put(ItemsRequiredob);


                        /*Toast.makeText(mContext, "i"+i+" "+listAddressN.get(i), Toast.LENGTH_SHORT).show();*/
                    Log.e("d", ItemsRequiredob.get("ItemID").toString());


            }
            ob.put("ItemsRequired",ItemsRequiredobArr);

这是我上面的数组

[{"ItemsRequired":[{"ItemID":"3224","StockCode":"10030","Description":"Complete - 3 section mattress\r\n\r\nPolyeurethane velcro grips","Quantity":"0"},{"ItemID":"3224","StockCode":"10030","Description":"Complete - 3 section mattress\r\n\r\nPolyeurethane velcro grips","Quantity":"0"}]

正如您所看到的,两个索引具有相同的数据,但是arraylist包含索引0和1上的不同数据。 因为我是初学者,请帮帮我。

1 个答案:

答案 0 :(得分:0)

您的ItemsRequiredob对象已创建一次,并且您每次都在设置该值,因此它正在讨论每个对象的最后一项,因此将ItemsRequiredob置于此类循环中,它将正常工作

            for(int ii=0;ii<StocklistAdapter.listItemN.size();ii++){
JSONObject ItemsRequiredob=new JSONObject();

                ItemsRequiredob.put("ItemID",StocklistAdapter.itemIdN.get(ii));
                ItemsRequiredob.put("StockCode",StocklistAdapter.listItemN.get(ii));
                Toast.makeText(this, "StockCode"+StocklistAdapter.listItemN.get(ii), Toast.LENGTH_SHORT).show();
                ItemsRequiredob.put("Description",StocklistAdapter.listAddressN.get(ii));
                ItemsRequiredob.put("Quantity",StocklistAdapter.QuaN.get(ii));

                ItemsRequiredobArr.put(ItemsRequiredob);


                        /*Toast.makeText(mContext, "i"+i+" "+listAddressN.get(i), Toast.LENGTH_SHORT).show();*/
                    Log.e("d", ItemsRequiredob.get("ItemID").toString());


            }