java接口自动化测试实战003----fastjson处理传入参数为JSON格式数据

发布时间 2023-12-22 21:26:37作者: 搁浅的青木儿

一、fastjson概述

1、概述

     fastjson是阿里爸爸开发的一款专门用于Java开发的包,可以方便的实现json对象与JavaBean对象的转换,实现JavaBean对象与json字符串的转换,实现json对象与json字符串的转换。

2、常用API

      fastjson API 入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。

public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray 
public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject    
public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean 
public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray 
public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合 
public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本 
public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本 
public static final Object toJSON(Object javaObject); //将JavaBean转换为JSONObject或者JSONArray。

注:

  • JSONArray : 相当于List
  • JSONObject: 相当于Map<String,Object>

二、json.parse实现解析表格中的json格式参数

1、实现思想

   将要传入的参数以Json形式存储在表格中,通过json.parse解析表格中的Json数据,并存储到map集合中,调用doPost 或者doGet方法时,直接调用存储Json数据的map集合就可以。

2、实现步骤

(1)将要传入的参数以Json形式存储在表格中,并放到项目src/test/resouce目录下,其中表格格式如下图所示:

 

 

(2)在maven的配置文件pom.xml配置FastJson依赖,如下所示:

         <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.47</version>
        </dependency>

(3)编写函数,通过FastJson解析表格中的Json数据,并存储到map集合中,并在doPost 或者doGet方法调用map集合,如下所示:

public class login_v6 {
    //调用ExcelUtil_3,使用JSONObject.parse处理传入数据格式为Json形式,需要将ExcelUtil_3中的表格名称换成Sheet2
    @Test(dataProvider="datas")
     public void login(String parameters) {
        String url="http://127.0.0.1:58088/api/user/smsCodeLogin";
        JSONObject.parse(parameters);
        //将json格式的数据转化为map
        Map<String,String> parameter= (Map<String,String>) JSON.parse(parameters);
        //循环输出map集合中的数据
        Set<String> pa=parameter.keySet();
        for (String pas : pa) {
            System.out.println(pas+"  "+parameter.get(pas));
        }
        //调用post方法,以map结合形式传入参数
          HttpUtil1.doPost(url,parameter);
     }
    @DataProvider
    public Object[][] datas(){
        String excelPath="src/test/resources/测试用例_V1.xlsx";
        int rowNum[]= {1,2,3,4,5,6,7};
        int cellNum[]= {5};
        Object[][] datas= ExcelUtil_3.getDatas(excelPath,"Sheet2",rowNum,cellNum);
        return datas;
    }
}

 

三、json.parseObject实现解析表格中的json格式参数

1、实现思想

   将要传入的参数以Json形式存储在表格中,通过json.parseObject将表格中的Json数据转化为java对象,从对象中取出参数数据并存储到map集合中,调用doPost 或者doGet方法时,直接调用map集合就可以。

2、实现代码

(1)新建loginParameter类,存储登录数据,如下所示:

public class LoginParameter {
  String Mobile;
  String smsCode;
    public String getMobile() {
        return Mobile;
    }
    public void setMobile(String mobile) {
        Mobile = mobile;
    }
    public String getSmsCode() {
        return smsCode;
    }
    public void setSmsCode(String smsCode) {
        this.smsCode = smsCode;
    }
}

 

(2)通过json.parseObject将表格中的Json数据转化为java对象,从对象中取出参数数据并存储到map集合中,如下所示:

public class login_v7 {
    //调用ExcelUtil_3,使用JSONObject.parseObject处理传入数据格式为Json形式,需要将ExcelUtil_3中的表格名称换成Sheet2
    @Test(dataProvider="datas")
     public void login(String parameters) {
        String url="http://127.0.0.1:58088/api/user/smsCodeLogin";
        Map<String,String> parameter=new HashMap<String,String> ();
        //将json格式数据转换为java对象
        LoginParameter loginPara = JSON.parseObject(parameters, LoginParameter.class);
             //从java对象中取出参数数据====手机号和密码
            String mobile = loginPara.getMobile().toString();
            String smsCode = loginPara.getSmsCode().toString();
            //将取出的参数数据添加到map集合中
            parameter.put("mobile",mobile);
            parameter.put("smsCode",smsCode);
           //遍历map集合,判断参数数据是否已经添加到map中
            Set<String> pa=parameter.keySet();
            for (String pas : pa) {
                System.out.println(pas+"  "+parameter.get(pas));
            }
            //输出响应数据
        System.out.println(HttpUtil2.doPost(url,parameter)); 
     }
    
    @DataProvider
    public Object[][] datas(){
        String excelPath="src/test/resources/测试用例_V1.xlsx";
        int rowNum[]= {1,2,3,4,5,6,7};
        int cellNum[]= {5};
        Object[][] datas= ExcelUtil_3.getDatas(excelPath,"Sheet2",rowNum,cellNum);
        return datas;
    }
}

 

四、总结

  •  fastjson概述
  •  json.parse解析json格式数据:使用(Map<String,String>) JSON.parse(parameters)将json格式数据强制转化为map集合形式
  •  json.parseObject解析json格式数据:使用 JSON.parseObject(parameters, LoginParameter.class);将json格式的数据转化为java对象,再从java对象中取出参数数据,添加到map集合。