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

 @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. crt执行cat命令后乱码

    cat查看二进制文件后所有命令都乱码执行reset即可恢复

  2. windows下遍历文件夹下的文件

    #include <io.h>#include <stdio.h>#include <iostream>using namespace std;int ReadSt ...

  3. 并发编程的锁机制:synchronized和lock

    1. 锁的种类 锁的种类有很多,包括:自旋锁.自旋锁的其他种类.阻塞锁.可重入锁.读写锁.互斥锁.悲观锁.乐观锁.公平锁.可重入锁等等,其余就不列出了.我们重点看如下几种:可重入锁.读写锁.可中断锁. ...

  4. hiho #1038 : 01背包 (dp)

    #1038 : 01背包 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 且说上一周的故事里,小Hi和小Ho费劲心思终于拿到了茫茫多的奖券!而现在,终于到了小Ho领取奖励 ...

  5. 关于system.timer的使用

    private System.Timers.Timer _timer = null; if (_timer == null) { _timer = new System.Timers.Timer(); ...

  6. 【leetcode】1239. Maximum Length of a Concatenated String with Unique Characters

    题目如下: Given an array of strings arr. String s is a concatenation of a sub-sequence of arr which have ...

  7. Anaconda 安装+使用+换源+更新

    anaconda官网下载安装:https://www.continuum.io/downloads/ anaconda用法:查看已经安装的包:pip list 或者 conda list 安装和更新: ...

  8. PHP关于对象访问静态方法、属性等问题

    为何有这样的问题呢?源自一段代码,如下: class A { // public static $name = 'wangyumeidsb'; public $name = 'woaini'; pub ...

  9. js中的“==”与“===”的区别

    console(34 == "34")  输出true console(34 === "34")  输出false 因此,==  只判断值,不判断类型,实际上里 ...

  10. 关系型数据库(四),引擎MyISAM和InnoDB

    目录 1.MyISAM和InnoDB关于锁方面的区别是什么 2.MYSQL的两个常用存储引擎 3.MyISAM应用场景 4.InnoDB适合场景 四.引擎MyISAM和InnoDB 1.MyISAM和 ...