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)    收藏  举报

导航