做筛选遍历时遇到的json字符串、json对象、json数组 三者之间的转换问题
2024-08-30 14:08:40
这个是后台对登录用户以及筛选条件的操作
@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;
}
java和js中JSONObject,JSONArray,Map,String之间转换——持续更新中
本文仅作为个人记录。
可供参考。
2017-11-13 08:48:56
2017-11-18 09:04:43 更新
最新文章
- Josephus环类问题,java实现
- JSON对象长度和遍历方法
- css 隐藏超长的文本!!!
- 队列(Queue)--环形队列、优先队列和双向队列
- Servlet 3.0 新特性
- Codevs 1083 Cantor表
- 支持向量机(SVM)算法的matlab的实现
- MVC中HtmlHelper用法大全参考
- 最新jhost免费jsp云空间会员邀请码
- Openjudge-计算概论(A)-奇数单增序列
- 移动端touch触屏滑动事件、滑动触屏事件监听!
- [BZOJ2707]走迷宫
- Java 三目运算符表达式的一些问题
- 报Cannot change version of project facet Dynamic web module to 2.5 错误
- vue之生命周期钩子函数之运用
- 关于shiro安全框架实现同一用户同一时刻仅可在一个地址登录的技术实现
- why?
- 不能靠眼睛之 KEIL 中失效代码灰暗特性
- Ehcache Monitor使用一例
- Hive 数据类型