做筛选遍历时遇到的json字符串、json对象、json数组 三者之间的转换问题
这个是后台对登录用户以及筛选条件的操作
@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 更新
做筛选遍历时遇到的json字符串、json对象、json数组 三者之间的转换问题的更多相关文章
- json字符串、json对象、数组 三者之间的转换
json字符串转化成json对象 // jquery的方法 var jsonObj = $.parseJSON(jsonStr) //js 的方法 var jsonObj = JSON.parse(j ...
- json字符串和对象的相互转化
json在代码中是经常用到的,在此总结一下json字符串和对象及数组之间的相互转化: 1.javascript函数方式: <1> JSON.stringify :把一个对象转换成json字 ...
- js在前端json字符串和对象互相转化
js在前端json字符串和对象互相转化 //对象转json串 注意:参数必须是对象,数组不起作用,对象格式{'0'=>'a'} JSON.stringify( arr ); //json字符串转 ...
- js中json字符串与对象的转换及是否为空
1.json对象(数组)转字符串 var b=[ { "CategoryName" : "Beverages", "ProductName" ...
- 字符串、对象、数组操作方法、json方法
1.字符串操作方法 1.charAt * 作用 * 通过索引找字符 ...
- json对象转字符串与json字符串转对象
1.概述: 我们在编程时进场会遇到json对象转字符串,或者字符串转对象的情况. 2.解决办法: json.parse()方法是将json字符串转成json对象. json.stringfy()方法是 ...
- JSON字符串转对象
JSON(JavaScript Object Notation) JavaScript对象标记法:JSON是与JavaScript高度契合的:JSON 语法: --数组(Array)用" ...
- VBScript把json字符串解析成json对象的2个方法
这篇文章主要介绍了VBScript把json字符串解析成json对象的2个方法,本文通过MSScriptControl.ScriptControl和jscript实现,需要的朋友可以参考下 asp/v ...
- 速战速决 (6) - PHP: 获取 http 请求数据, 获取 get 数据 和 post 数据, json 字符串与对象之间的相互转换
[源码下载] 速战速决 (6) - PHP: 获取 http 请求数据, 获取 get 数据 和 post 数据, json 字符串与对象之间的相互转换 作者:webabcd 介绍速战速决 之 PHP ...
随机推荐
- mysql dump出source进去时报1046
我这边主要是备注里有 ; 号标记,所以在执行时应该会有问题,改成中文:的 出现这个问题可以打开sql文件,看看错误的点, 大胆尝试
- TO B是什么?TO C呢?
总是听别人说 to B. to C 的 所以了解一下这个概念: 一.基本概念 1. TO B,B指的是== business==,中文即商业,企业: 2. TO C,C指的是customer, ...
- Spring使用@AspectJ开发AOP(零配置文件)
前言: AOP并不是Spring框架特有的.Spring只是支持AOP编程 (面向切面编程) 的框架之一. 概念: 1.切面(Aspect) 一系列Advice + Pointcut 的集合. 2.通 ...
- k8s配置文件模板
一,deployment Deployment为Pod和Replica Set下一代Replication Controller)提供声明式更新 1,配置示例 apiVersion: apps/v1 ...
- Visual Studio右侧缩略图
打开Visual Studio→工具→选项 点击确定,完成!Enjoy!
- javascript中创建对象的方式及优缺点(一)
1. 简单方式创建对象 // 字面量方式创建对象 var person1 = { name: "xyc", age: 23, sayHi: function() { console ...
- 手动升级 Confluence - 规划你的升级
1. 确定你的升级路径 使用下面的表格来确定最佳的升级路径来让你的Confluence 从当前版本升级到最新的 Confluence 版本. 你的版本 推荐升级到 Confluence 的升级路径 2 ...
- Springboot 系列(十七)迅速使用 Spring Boot Admin 监控你的 Spring Boot 程序,支持异常邮件通知
1. Spring Boot Admin 是什么 Spring Boot Admin 是由 codecentric 组织开发的开源项目,使用 Spring Boot Admin 可以管理和监控你的 S ...
- jQuery_CSS类操作
下面讲述jQuery操作css类,进行类的添加,移除,以及前两项功能的结合操作. <!DOCTYPE html> <html> <head> <meta ch ...
- Mybatis笔记总结
第一.Mybatis介绍 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改 ...