解读JSONArray删除元素的两种方式
红桃∩ 人气:0JSONArray删除元素的两种方式
我自个磨出来的,难受
JSONArray jsonarray = new JSONArray(); Set<Object> jsonObjects = new HashSet<>(); for (Object obj : jsonarray) { JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(obj)); if (jsonObject.containsKey("key")) { jsonObjects.add(jsonObject); } } jsonarray.removeAll(jsonObjects);
来自于FeelTouch,厉害
JSONObject o1 = new JSONObject(); o1.put("key", 324); JSONObject o2 = new JSONObject(); o2.put("key", 325); JSONObject o3 = new JSONObject(); o3.put("key", 325); JSONObject o4 = new JSONObject(); o4.put("key", 327); JSONArray ja = new JSONArray(); ja.add(o1); ja.add(o2); ja.add(o3); ja.add(o4); Iterator<Object> o = ja.iterator(); while (o.hasNext()) { JSONObject jo = (JSONObject) o.next(); if(jo.getIntValue("key") == 325) { //ja.remove(jo); //不要用这种方式删除,会报出ConcurrentModificationException o.remove(); //这种方式OK的 } } System.out.println(ja);
移除JSONArray中匹配的元素
/** * 移除JSONArray中匹配的元素 * helper.isBookOrChange获取类中isBookOrChange值 * @param jarr * @return * @author taiyang */ public JSONArray getOrderFilter(JSONArray jarr){ Iterator<Object> o = jarr.iterator(); while (o.hasNext()) { JSONObject jo = (JSONObject) o.next(); JSONArray finalArray = null; if(!CollectionUtils.isEmpty(jo.getJSONArray("myTicketList"))){ JSONArray myTicketListArray=jo.getJSONArray("myTicketList"); //判断是否是红色 finalArray=myTicketListArray.stream().filter(iter -> (BookOrChangeEnum.CHANGE_TICKET.getCode().equals(helper.isBookOrChange)?"红色":"蓝色").equals(((JSONObject) iter).get("ticket_status_name"))).collect(Collectors.toCollection(JSONArray::new)); } if(!CollectionUtils.isEmpty(finalArray)) { o.remove(); //移除 } } return jarr; }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
加载全部内容