public static void test(Map<String,Object> condition){
JSONObject json = new JSONObject();
List<OfferBean> offerList = offerService.getListByCondition(condition);
List<Object> list = new ArrayList<Object>();
if(offerList!=null&&offerList.size()>0){
for(int i=0;i<offerList.size();i++){
OfferBean bean = offerList.get(i);
UserBean user = userService.getBeanByUid(bean.getUid());
json.put("id",bean.getId() );
json.put("productname",bean.getProductname() );
json.put("cityname",bean.getCityname() );
json.put("time",bean.getTime() );
json.put("address",bean.getCityname() );
json.put("grade",user.getGrade() );
list.add(json);
}
}
}
List<Object>动态添加json数据时,List中json对象内容被覆盖。
原因:
新建JSONObject放到for循环外了,只有一个json对象,地址一样,内容更换时所有对象内容都被覆盖。
解决方法:
把新建JSONObject放到for循环内。
本文探讨了在Java中使用List动态添加JSON数据时常见的错误——JSON对象内容被覆盖的问题。详细解析了错误产生的原因,即在for循环外部创建JSONObject导致所有元素引用同一个对象,以及如何通过在循环内部创建新的JSONObject来解决此问题。
984





