做筛选遍历时遇到的json字符串、json对象、json数组 三者之间的转换问题
这个是后台对登录用户以及筛选条件的操作
1 @Override 2 public List<SdSdPer> listResults(String sidx, String sord) { 3 try { 4 List<SdSdPer> results = Collections.emptyList(); 5 rlist = new ArrayList<SdSdPer>(results); 6 String setC = setCdtInit(sidx, sord);//setC------>{"chenbanrenid":"****" }json对象 7 String rstr = oaboSvc.getSdrs(setC);//rstr------>[{"oid":"----":"史红波"}] 所有送达人员的信息json数组 8 System.out.println("rstr------->"+rstr); 9 if (bauser.getUserName().equals("admin")) { 10 if(!StringUtil.isEmpty(rstr) && !rstr.equals("[]")){ 11 rlist = GsonUtil.getObjects(rstr, new TypeToken<ArrayList<SdSdPer>>() {}.getType()) ; 12 } 13 } else { 14 //筛选结果json数组 15 String rstr1=null ; 16 String sdrstr=null; 17 JSONArray jsonarr=JSONArray.fromObject(rstr1); 18 //json对象 19 JSONObject jo1 = JSONObject.fromObject(setC); 20 //获取相应key的值 (登录用户的id值作为承办id) 21 String chenbanrenid1 = jo1.getString("chenbanrenid"); 22 //json数组 23 JSONArray jo2=JSONArray.fromObject(rstr); 24 for (int i = 0; i < jo2.size(); i++) { 25 //遍历json数组 取出一个json对象 26 JSONObject jsonobj = jo2.getJSONObject(i); 27 System.out.println("===================="+jsonobj); 28 String chenbanrenid2=jsonobj.getString("chenbanId"); 29 //判断两者id是否一致 一致的话将遍历出来的json对象放进 筛选结果json数组 30 System.out.println("chenbanrenid1==chenbanrenid2:"+chenbanrenid1.equals(chenbanrenid2)); 31 if(chenbanrenid1!=null && chenbanrenid2!=null &&chenbanrenid1.equals(chenbanrenid2)){ 32 //把这条数据添加到json数组中 33 jsonarr.add(jsonobj); 34 } 35 } 36 jsonarr.remove(0); 37 sdrstr=jsonarr.toString(); 38 System.out.println("sdrstr----->"+sdrstr); 39 if(!StringUtil.isEmpty(sdrstr) && !sdrstr.equals("[]")){ 40 rlist = GsonUtil.getObjects(sdrstr, new TypeToken<ArrayList<SdSdPer>>() {}.getType()) ; 41 } 42 } 43 44 return rlist; 45 } catch (Exception e) { 46 log.error(e.getMessage()); 47 e.printStackTrace(); 48 } 49 return null; 50 }
在这里 首先是判断登录用户 随后对遍历出来的所有结果进行筛选,满足条件的放进一个新的数组。最后删除第一个空的元素。
当然 还有一种思路是把不满足条件的元素直接从所有结果中删除 再直接遍历然后显示到页面上
---------------------------------------------------------------------------------------------------------------------------------------------------------
上述代码整理后:
@Override public List<SdSdPer> listResults(String sidx, String sord) { try { List<SdSdPer> results = Collections.emptyList(); rlist = new ArrayList<SdSdPer>(results); String setC = setCdtInit(sidx, sord);//setC------>{"chenbanrenid":"****" }json对象 String rstr = oaboSvc.getSdrs(setC);//rstr------>[{"oid":"----":"史红波"}] 所有送达人员的信息json数组 System.out.println("rstr------->"+rstr); if (bauser.getUserName().equals("admin")) { if(!StringUtil.isEmpty(rstr) && !rstr.equals("[]")){ rlist = GsonUtil.getObjects(rstr, new TypeToken<ArrayList<SdSdPer>>() {}.getType()) ; } } else { String sdrstr=checkSdr( sidx, sord); System.out.println("sdrstr----->"+sdrstr); if(!StringUtil.isEmpty(sdrstr) && !sdrstr.equals("[]")){ rlist = GsonUtil.getObjects(sdrstr, new TypeToken<ArrayList<SdSdPer>>() {}.getType()) ; } } return rlist; } catch (Exception e) { log.error(e.getMessage()); e.printStackTrace(); } return null; } /** * 判断送达人员所属 * @return */ public String checkSdr(String sidx, String sord){ System.out.println("/////////////"+"人员筛选"+"///////////"); String rstr=""; String rstr1=null ; String sdrstr=null; try { String setC = setCdtInit(sidx, sord);//setC------>{"chenbanrenid":"****" }json对象 rstr = oaboSvc.getSdrs(setC);//rstr------>[{"oid":"----":"史红波"}] 所有送达人员的信息json数组 //筛选结果json数组 JSONArray jsonarr=JSONArray.fromObject(rstr1); //json对象 JSONObject jo1 = JSONObject.fromObject(setC); //获取相应key的值 (登录用户的id值作为承办id) String chenbanrenid1 = jo1.getString("chenbanrenid"); //json数组 JSONArray jo2=JSONArray.fromObject(rstr); for (int i = 0; i < jo2.size(); i++) { //遍历json数组 取出一个json对象 JSONObject jsonobj = jo2.getJSONObject(i); System.out.println("===================="+jsonobj); String chenbanrenid2=jsonobj.getString("chenbanId"); //判断两者id是否一致 一致的话将遍历出来的json对象放进 筛选结果json数组 System.out.println("chenbanrenid1==chenbanrenid2:"+chenbanrenid1.equals(chenbanrenid2)); if(chenbanrenid1!=null && chenbanrenid2!=null &&chenbanrenid1.equals(chenbanrenid2)){ //把这条数据添加到json数组中 jsonarr.add(jsonobj); } } jsonarr.remove(0); sdrstr=jsonarr.toString(); } catch (RemoteException e) { e.printStackTrace(); } return sdrstr; }
java和js中JSONObject,JSONArray,Map,String之间转换——持续更新中
本文仅作为个人记录。
可供参考。
2017-11-13 08:48:56
2017-11-18 09:04:43 更新
请留下你的足迹...