Jmeter Beanshell 获取复杂json中的对象到新的jsonArry
1.前一接口返回的json具有多层包装
{"StateCode":200,"Msg":"数据获取成功","Data":{
"PersonalizedItemList":[
{"QuotaClassId":783,"QuotaClassName":"背景墙(单选)","SelectionType":1,"QuotaList":[
{"QuotaId":41389,"Title":"硅藻泥背景墙","IsJoinQuote":2},{"QuotaId":41390,"Title":"大理石背景墙","IsJoinQuote":2},{"QuotaId":41391,"Title":"木饰面背景墙","IsJoinQuote":2},{"QuotaId":41392,"Title":"壁纸(壁布)背景墙","IsJoinQuote":2},{"QuotaId":41393,"Title":"软包背景墙","IsJoinQuote":2},{"QuotaId":41394,"Title":"硬包背景墙","IsJoinQuote":2}
]},
{"QuotaClassId":849,"QuotaClassName":"阳光房(单选)","SelectionType":1,"QuotaList":[
{"QuotaId":41402,"Title":"彩钢板阳光房","IsJoinQuote":2},{"QuotaId":41403,"Title":"阳光板阳光房","IsJoinQuote":2},{"QuotaId":41404,"Title":"钢化玻璃阳光房","IsJoinQuote":2}
]},
{"QuotaClassId":864,"QuotaClassName":"中央空调(单选)","SelectionType":1,"QuotaList":[
{"QuotaId":41454,"Title":"中央空调","IsJoinQuote":2},{"QuotaId":41455,"Title":"风管机空调","IsJoinQuote":2}]},{"QuotaClassId":850,"QuotaClassName":"现场定制柜体(多选)","SelectionType":2,"QuotaList":[{"QuotaId":41405,"Title":"酒柜","IsJoinQuote":2},{"QuotaId":41406,"Title":"鞋柜","IsJoinQuote":2},{"QuotaId":41407,"Title":"衣柜","IsJoinQuote":2},{"QuotaId":41408,"Title":"储物柜","IsJoinQuote":2},{"QuotaId":41409,"Title":"装饰柜","IsJoinQuote":2},{"QuotaId":41410,"Title":"榻榻米","IsJoinQuote":2},{"QuotaId":41411,"Title":"书柜","IsJoinQuote":2}
]},
{"QuotaClassId":779,"QuotaClassName":"其他(多选)","SelectionType":2,"QuotaList":[
{"QuotaId":41396,"Title":"地台制作","IsJoinQuote":2},{"QuotaId":41397,"Title":"内嵌轨道灯","IsJoinQuote":2},{"QuotaId":41401,"Title":"浴缸基座安装","IsJoinQuote":2},{"QuotaId":41412,"Title":"石膏板异形吊顶","IsJoinQuote":2}
]}
]}}
2.需要根据其对应的格式组合,举例如下
[{"QuotaId":41389,"IsJoinQuote":2},{"QuotaId":41390,"IsJoinQuote":2},{"QuotaId":41391,"IsJoinQuote":2},{"QuotaId":41392,"IsJoinQuote":2},{"QuotaId":41393,"IsJoinQuote":2},{"QuotaId":41394,"IsJoinQuote":2},{"QuotaId":41402,"IsJoinQuote":2},{"QuotaId":41403,"IsJoinQuote":2},{"QuotaId":41404,"IsJoinQuote":2},{"QuotaId":41454,"IsJoinQuote":1},{"QuotaId":41455,"IsJoinQuote":2},{"QuotaId":41405,"IsJoinQuote":1},{"QuotaId":41406,"IsJoinQuote":2},{"QuotaId":41407,"IsJoinQuote":2},{"QuotaId":41408,"IsJoinQuote":2},{"QuotaId":41409,"IsJoinQuote":2},{"QuotaId":41410,"IsJoinQuote":2},{"QuotaId":41411,"IsJoinQuote":2},{"QuotaId":41396,"IsJoinQuote":2},{"QuotaId":41397,"IsJoinQuote":2},{"QuotaId":41401,"IsJoinQuote":2},{"QuotaId":41412,"IsJoinQuote":2}]
3.实现示例
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSON;
import java.util.Random;
String response_data = prev.getResponseDataAsString();//获取响应数据,转换为字符串
JSONObject obj_data = JSON.parseObject(response_data);//把整个字符串转换为jsonObject
JSONArray PersonalizedItemList = obj_data.get("Data").getJSONArray("PersonalizedItemList");//获取自选项分类列表
JSONArray lastPull = new JSONArray();//定义jsonArray接收重组数据
//log.info("-------分类列表总和------"+PersonalizedItemList);
//根据多选和单选配置参数属性
 for(int i = 0; i < PersonalizedItemList.size(); i++) {
 	JSONObject obj =  PersonalizedItemList.get(i);
 	log.info("自选装修项目"+obj);
 	int typeNum = obj.get("SelectionType"); //获取SelectionType:1单选,2多选
 	
 	if(typeNum==1){//单选项,配置某个选项不选或最多选一个
 		JSONArray QuotaList1 = obj.getJSONArray("QuotaList");
 	     //log.info("**********1************"+QuotaList1);
 	     int ifchose1 =new Random().nextInt(100);//生成随机数
 	     int num1 = QuotaList1.size();
 	     int choseID1 =new Random().nextInt(num1);
 	     //log.info("choseID1的值是:"+choseID1);
 	     for(int i = 0; i < num1; i++) {
 	     	JSONObject obj1 =  QuotaList1.get(i);
 	     	obj1.remove("Title");
 	     	if(ifchose1%2==0){//如果随机数除以2的余数是0,则随机把某个装修项置为1,其他的置为2
 	     		if(i==choseID1){
 	     				obj1.put("IsJoinQuote",1);
 	     				}else{
 	     					obj1.put("IsJoinQuote",2);
 	     					}
 	     		
 	     		}else{//如果随机数除以2的余数不是0,则这个装修项不选择,全部置为2
 	     			obj1.put("IsJoinQuote",2);
 	     			}
 	     	lastPull.add(obj1);//把处理好的对像添加到重新组合的jsonArray中
 	     	log.info("**********QuotaList1************"+obj1);
 	     	}
 	}else{//多选项,配置某个选项随机选几个
          JSONArray QuotaList2 = obj.getJSONArray("QuotaList");
          int ifchose2 =new Random().nextInt(100);//生成随机数
 	     int num2 = QuotaList2.size();
 	     int choseID2 =new Random().nextInt(num2);
          for(int i = 0; i < QuotaList2.size(); i++) {
 	     	JSONObject obj2 =  QuotaList2.get(i);
 	     	obj2.remove("Title");
               if(ifchose2%3==0){//如果随机数除以3的余数是0,则随机把某个装修项置为1,其他的置为2
 	     		if(i==choseID2){
 	     				obj2.put("IsJoinQuote",1);
 	     				}else{
 	     					obj2.put("IsJoinQuote",2);
 	     					}
 	     		}else if(ifchose2%3==1){//如果随机数除以3的余数是1,则这个装修项全选
 	     			obj2.put("IsJoinQuote",1);
 	     			}else{//随机数除以3求余是2,则全部不取
 	     				obj2.put("IsJoinQuote",2);
 	     				}
 	     	
 	     	lastPull.add(obj2);
 	     	log.info("**********QuotaList2************"+obj2);
 	     	}
 		
 		}
 	}
//log.info("****自选组合结果******"+lastPull);
vars.putObject("quotas",lastPull)
posted on 2021-09-09 16:59 Darren-Frank 阅读(418) 评论(0) 收藏 举报
 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号