这个是后台对登录用户以及筛选条件的操作

 @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 {
//筛选结果json数组
String rstr1=null ;
String sdrstr=null;
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();
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;
}

在这里  首先是判断登录用户   随后对遍历出来的所有结果进行筛选,满足条件的放进一个新的数组。最后删除第一个空的元素。

当然  还有一种思路是把不满足条件的元素直接从所有结果中删除  再直接遍历然后显示到页面上

---------------------------------------------------------------------------------------------------------------------------------------------------------

上述代码整理后:

    @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;
}

参考  :json字符串、json对象、数组 三者之间的转换

      java和js中JSONObject,JSONArray,Map,String之间转换——持续更新中

本文仅作为个人记录。

可供参考。

2017-11-13    08:48:56

2017-11-18    09:04:43   更新

做筛选遍历时遇到的json字符串、json对象、json数组 三者之间的转换问题的更多相关文章

  1. json字符串、json对象、数组 三者之间的转换

    json字符串转化成json对象 // jquery的方法 var jsonObj = $.parseJSON(jsonStr) //js 的方法 var jsonObj = JSON.parse(j ...

  2. json字符串和对象的相互转化

    json在代码中是经常用到的,在此总结一下json字符串和对象及数组之间的相互转化: 1.javascript函数方式: <1> JSON.stringify :把一个对象转换成json字 ...

  3. js在前端json字符串和对象互相转化

    js在前端json字符串和对象互相转化 //对象转json串 注意:参数必须是对象,数组不起作用,对象格式{'0'=>'a'} JSON.stringify( arr ); //json字符串转 ...

  4. js中json字符串与对象的转换及是否为空

    1.json对象(数组)转字符串 var b=[ { "CategoryName" : "Beverages", "ProductName" ...

  5. 字符串、对象、数组操作方法、json方法

    1.字符串操作方法                 1.charAt               *     作用              *         通过索引找字符             ...

  6. json对象转字符串与json字符串转对象

    1.概述: 我们在编程时进场会遇到json对象转字符串,或者字符串转对象的情况. 2.解决办法: json.parse()方法是将json字符串转成json对象. json.stringfy()方法是 ...

  7. JSON字符串转对象

    JSON(JavaScript Object Notation) JavaScript对象标记法:JSON是与JavaScript高度契合的:JSON 语法:    --数组(Array)用" ...

  8. VBScript把json字符串解析成json对象的2个方法

    这篇文章主要介绍了VBScript把json字符串解析成json对象的2个方法,本文通过MSScriptControl.ScriptControl和jscript实现,需要的朋友可以参考下 asp/v ...

  9. 速战速决 (6) - PHP: 获取 http 请求数据, 获取 get 数据 和 post 数据, json 字符串与对象之间的相互转换

    [源码下载] 速战速决 (6) - PHP: 获取 http 请求数据, 获取 get 数据 和 post 数据, json 字符串与对象之间的相互转换 作者:webabcd 介绍速战速决 之 PHP ...

随机推荐

  1. Java异常try里面有return,finally代码会执行吗

    try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后? 肯定会执行.finally{}块的代码只有在try{} ...

  2. Linux 内核源代码的几个C语言技巧

    1.#define中使用do{statement}while(0)保证statement无论在何处都能正确执行一次2.将链表操作抽象出来,与宿主结果相互独立.所有的链表操作都作用与list_head, ...

  3. linux命令详解之ls命令

    ls命令概述 ls命令用于显示文件目录列表,和Windows系统下DOS命令dir类似.当执行ls命令时,默认显示的只有非隐藏文件的文件名.以文件名进行排序及文件名代表的颜色显示.当不加参数时,默认列 ...

  4. 10.17小作业 基于TCP开发一款远程CMD程序

    基于TCP开发一款远程CMD程序 客户端连接服务器后,可以向服务器发送命令 服务器收到命令后执行,无论执行是否成功,无论执行几遍,都将执行结果返回给客户端 注意: 执行系统指令使用subprocess ...

  5. Unknown or unsupported command 'install'

    由于电脑中存在多个python,导致pip install numpy出现标题这样的错误 结局方案; 在想要的python文件夹中的Scripts,shift右键点开命令行,pip.exe insta ...

  6. [RCTF]Pwn200 wp

    0x00: XCTF开赛了,只看了pwn,这次还比较有意思,有x86  x64  arm mips 多种cpu构架的pwn.自己只搞出了pwn200 0x01: 基本信息: x64 动态链接 有调试符 ...

  7. 悲观锁,乐观锁以及MVCC

    在上文中,我们探讨了MySQL不同存储引擎中的各类锁,在这篇文章中我们将要讨论的是MySQL是如何实现并发控制的.并发问题有三种,分别为: 读-读,不存在任何问题 读-写,有隔离性问题,可能遇到脏读( ...

  8. 51 Nod 1066 Bash游戏

    1066 Bash游戏  基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 有一堆石子共有N个.A B两个人轮流拿,A先拿.每次最少拿1颗,最多拿K颗,拿到 ...

  9. HDU 4738--Caocao's Bridges(重边无向图求桥)

    Caocao's Bridges Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  10. You Are Given a Decimal String...

    B. You Are Given a Decimal String... 这个题需要求出从某一个尾数 n 变为 m 所需要的 x 和 y 的最小个数(i+j) 那么就需要预处理出一个数组来存放这个值. ...