废话不多说, 先直接上我的一堆垃圾思路过程。先贴上, 后面闲了慢慢给大家做分析, 反正踩过的坑我是想来几句的。
补个问题: GUI模式下模糊匹配的多值JSONpath数组如何与Beahshell无缝对接? – 给大家留个思考题.
import com.alibaba.fastjson2.*;
import java.util.*;
String rep = prev.getResponseDataAsString();
JSONObject jsonObject_rep = JSONObject.parseObject(rep);
String results = jsonObject_rep.get("d").get("MainView").get("results").toString();
//JSONArray json = JSON.fromObject(results); -- 这个方法好像不支持
//JSONArray jA = JSONObject.getJSONArray("results"); --Cannot reach instance method
JSONArray jA = JSON.parseArray(results);
int size = jA.size();
log.info("2-1===============:{}",size);
//JSONObject rowData = new JSONObject(folderStructure); --folderStructure好像没有这个类型
/*
for(int i = 0; i < size; i++){ -- Cannot access field: getJSONObject, on object,这个地方很奇怪,方法就是一直进不去.
JSONObject rowData = jA.getJSONObject[i];
log.info("4======第 "+i+" =========:{}",rowData);
}*/
/*重新规划一下思路,这个地方先取到33条数据,然后重新定义存储,存储为自己想要的自定义格式,然后再使用正常的if语句去条件匹配获取想要的值,*/
//Map<String,JSONArray> map = new HashMap<String, JSONArray>(); 这个思路不行,因为数组里面有相同的key,会混乱,转了之后处理起来无处下手
//
for (Object object:jA) { //这个实现方法好像可以遍历一遍,
JSONObject jsonObject = (JSONObject) object;
//log.info("3======object=========:{}",object);//这一步其实是能取到object的,
String str = object.toString();
//log.info("3-1======str=========:{}",str);
//对取出来的值做一个jsonObject的解析操作是不是就可以了?
JSONObject jsonObject_analysis = JSONObject.parseObject(str);
//log.info("4======jsonObject_analysis=========:{}",jsonObject_analysis);
String MkDesc = jsonObject_analysis.getString("MkDesc");
log.info("4========MkDesc=======:{}",MkDesc);
String StepDesc = jsonObject_analysis.getString("StepDesc");
log.info("5======== StepDesc=======:{}",StepDesc);
String YqDesc = jsonObject_analysis.getString("YqDesc");
log.info("6=======YqDesc=======:{}",YqDesc);
//分析,这个地方为什么一直行不通? 其实上面解析取到值了,但是一直进不了if语句.1).if语句写错了 2).该for写法有啥特殊之处?知识盲区?→结论: if条件语句写的有问题,进不来
//if(MkDesc == "基础信息" && StepDesc == "主页面" && YqDesc == "主要信息")
//if(MkDesc == null || MkDesc.isEmpty()) -- 验证猜测语句->beanshell的特殊if判断语句,与原生java是有一定区别出入的,这个地方吃了大亏.
//equals(var) string+""
if(MkDesc.equals("基础信息") && StepDesc.equals("主页面") && YqDesc.equals("主要信息")){
log.info("7=======进来========:{}");
String AttrTab = jsonObject_analysis.getString("AttrTab");
log.info("7===============:{}",AttrTab);
JSONObject jsonObject2 = JSONObject.parseObject(AttrTab);
//log.info("8===============:{}",jsonObject2);
String GCMC = jsonObject2.getString("GCMC");
log.info("9===============:{}",GCMC);
vars.put("d_MainView_results_AttrTab_GCMC_initLoadPage_Submit_C_2",GCMC);
//log.info("11===============:{}",d_MainView_results_AttrTab_GCMC_initLoadPage_Submit_C_2); -- 此处与vars.put结合打印变量也不能这么使用,会识别解析不了,导致报错,程序无法运行提取正确值
//ZCFAMC
String ZCFAMC = jsonObject2.getString("ZCFAMC");
log.info("10===============:{}",ZCFAMC);
vars.put("d_MainView_results_AttrTab_ZCFAMC_initLoadPage_Submit_C_2",ZCFAMC);
//log.info("12===============:{}",d_MainView_results_AttrTab_ZCFAMC_initLoadPage_Submit_C_2);
log.info("7=======走完========:{}");
break;
}
}
/*String MkDesc = (String) jsonObject.get("MkDesc");
log.info("4======MkDesc=========:{}",MkDesc);//取不到,定位步骤,判断流程往下走
String MkDescConst = "基础信息";
String StepDescConst = "主页面";
String YqDescConst = "主要信息";
if(map.containsValue(MkDescConst) && map.containsValue(StepDescConst) && map.containsValue(YqDescConst)){
String AttrTab = jsonObject.getString("AttrTab");
log.info("7===============:{}",AttrTab);
JSONObject jsonObject2 = JSONObject.parseObject(AttrTab);
log.info("8===============:{}",jsonObject2);
String GCMC = jsonObject2.getString("GCMC");
log.info("9===============:{}",GCMC);
vars.put("d_MainView_results_AttrTab_GCMC_initLoadPage_Submit_C_2",GCMC);
log.info("11===============:{}",d_MainView_results_AttrTab_GCMC_initLoadPage_Submit_C_2);
//ZCFAMC
String ZCFAMC = jsonObject2.getString("ZCFAMC");
log.info("10===============:{}",ZCFAMC);
vars.put("d_MainView_results_AttrTab_ZCFAMC_initLoadPage_Submit_C_2",ZCFAMC);
log.info("12===============:{}",d_MainView_results_AttrTab_ZCFAMC_initLoadPage_Submit_C_2);
//取出第一条数据
//System.out.println(object.toString());
//取出JSONArray的一条转为 JSONObjec
JSONObject json = (JSONObject) JSON.parse(object.toString());
log.info("json =============== json:{}",json);
//这样就可以直接取出了
//System.out.println(json.get("name"));
}
}*/
//if(json.size()>0){
/*
Iterator<Array> it : jA.iterator();
while (it.hasNext()){
JSONObject jsonObject1 = (JSONObject) JSONObject.parseObject(object.toString());
log.info("jsonObject1是第 "+i+" ===============:{}",object.toString());
String MkDesc = jsonObject1.getString("MkDesc");
log.info("4======第 "+i+" =========:{}",MkDesc);
String StepDesc = jsonObject1.getString("StepDesc");
log.info("5========第 "+i+" =======:{}",StepDesc);
String YqDesc = jsonObject1.getString("YqDesc");
log.info("6=======第 "+i+" ========:{}",YqDesc);
i = i + 1;
if(MkDesc == "基础信息" && StepDesc == "主页面" && YqDesc == "主要信息"){
String AttrTab = jsonObject1.getString("AttrTab");
log.info("7===============:{}",AttrTab);
JSONObject jsonObject2 = JSONObject.parseObject(AttrTab);
log.info("8===============:{}",jsonObject2);
String GCMC = jsonObject2.getString("GCMC");
log.info("9===============:{}",GCMC);
vars.put("d_MainView_results_AttrTab_GCMC_initLoadPage_Submit_C_2",GCMC);
log.info("11===============:{}",d_MainView_results_AttrTab_GCMC_initLoadPage_Submit_C_2);
//ZCFAMC
String ZCFAMC = jsonObject2.getString("ZCFAMC");
log.info("10===============:{}",ZCFAMC);
vars.put("d_MainView_results_AttrTab_ZCFAMC_initLoadPage_Submit_C_2",ZCFAMC);
log.info("12===============:{}",d_MainView_results_AttrTab_ZCFAMC_initLoadPage_Submit_C_2);
}
}*/
/*{
JSONObject jsonObject1 = (JSONObject) it.next();
log.info("3===============:{}",jsonObject1);
String MkDesc = jsonObject1.getString("MkDesc");
log.info("4===============:{}",MkDesc);
String StepDesc = jsonObject1.getString("StepDesc");
log.info("5===============:{}",StepDesc);
String YqDesc = jsonObject1.getString("YqDesc");
log.info("6===============:{}",YqDesc);
if(MkDesc == "基础信息" && StepDesc == "主页面" && YqDesc == "主要信息"){
String AttrTab = jsonObject1.getString("AttrTab");
log.info("7===============:{}",AttrTab);
JSONObject jsonObject2 = JSONObject.parseObject(AttrTab);
log.info("8===============:{}",jsonObject2);
String GCMC = jsonObject2.getString("GCMC");
log.info("9===============:{}",GCMC);
//ZCFAMC
String ZCFAMC = jsonObject2.getString("ZCFAMC");
log.info("10===============:{}",ZCFAMC);
}
}*/
/*
JSONArray jsonArray= JSON.parseArray(str);
//for循环遍历对象
for (Object object:jsonArray) { 这个方法是只跑一遍,然后把里面的全部循环取出来.
//取出第一条数据
System.out.println(object.toString());
//取出JSONArray的一条转为 JSONObjec
JSONObject json = (JSONObject) JSONObject.parse(object.toString());
//这样就可以直接取出了
}
// 首先把字符串转成 JSONArray 对象
JSONArray json = JSONArray.fromObject(str );
if(json.size()>0){
for(int i=0;i<json.size();i++){
// 遍历 jsonarray 数组,把每一个对象转成 json 对象
JSONObject job = json.getJSONObject(i);
// 得到 每个对象中的属性值
System.out.println(job.get("name")+"=") ;
}
}
int size = jsonArray1.size();
log.info("2-1===============:{}",size);
for (int i = 0; i < size; i++){
JSONObject jsonObject1 = JSON.getJSONObject(i);
log.info("3===============:{}",jsonObject1);
String MkDesc = jsonObject1.getString("MkDesc");
log.info("4===============:{}",MkDesc);
String StepDesc = jsonObject1.getString("StepDesc");
log.info("5===============:{}",StepDesc);
String YqDesc = jsonObject1.getString("YqDesc");
log.info("6===============:{}",YqDesc);
if(MkDesc == "基础信息" && StepDesc == "主页面" && YqDesc == "主要信息"){
String AttrTab = jsonObject1.getString("AttrTab");
log.info("7===============:{}",AttrTab);
JSONObject jsonObject2 = JSONObject.parseObject(AttrTab);
log.info("8===============:{}",jsonObject2);
String GCMC = jsonObject2.getString("GCMC");
log.info("9===============:{}",GCMC);
//ZCFAMC
String ZCFAMC = jsonObject2.getString("ZCFAMC");
log.info("10===============:{}",ZCFAMC);
}
}
/*
//新创建一个String类型的jsonArry串
//转成jsonArray
JSONArray ja = JSONArray.parseArray(json);
//用Iterator迭代器进行遍历
Iterator<Object> it = ja.iterator();
while (it.hasNext()) {
JSONObject ob = (JSONObject) it.next();
//打印出遍历出的jsonObject
System.out.println(ob);
}
vars.put("d_MainView_results_AttrTab_GCMC_initLoadPage_Submit_C_2",GCMC);
log.info("11===============:{}",d_MainView_results_AttrTab_GCMC_initLoadPage_Submit_C_2);
vars.put("d_MainView_results_AttrTab_ZCFAMC_initLoadPage_Submit_C_2",ZCFAMC);
log.info("12===============:{}",d_MainView_results_AttrTab_ZCFAMC_initLoadPage_Submit_C_2);
*/
/*==========================================================================================*/
关于SRM 创建招采立项环节主页面信息的及加载初始化信息页面的分析思考处理过程记录