Jmeter之beanshell多种提取嵌套Json数据

Posted lht3347

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jmeter之beanshell多种提取嵌套Json数据相关的知识,希望对你有一定的参考价值。

前言

在之前的文章写道,Beanshell的简单提取json格式数据的用法。下面针对嵌套的json数据进行实践。

附上链接:Jmeter之BeanShell PostProcessor使用

对应jar包下载链接:
https://pan.baidu.com/s/1MXjpRrzUITfXHBiIcm0a0w
提取码:sy86

实例操作


    "bus_data":
    [
        
            "authCode":"0hx0ll",
            "createTime":"2020-12-12 17:37:23",
            "bus_phone":"15266888866",
            "info":"你要么努力向上爬,要么烂在社会最底层的泥淖里。"
        
    ],
    "authType":"1",
    "message":"GetAuthCode successful",
    "bus_code":"10001"

方法一

  • 采用org.json的jar包对json数据进行解析提取bus_data参数下的authCode参数的值。

    附上代码,如下所示:
    import org.json.*; //导入json解析库
    //获取请求返回值。赋予字符串String 变量
    String response = prev.getResponseDataAsString();
    //将string的值转换成成 Json 对象 
    JSONObject response_json = new JSONObject(response); 
    //将提取出来的bus_data数据值转换成Json列表
    JSONArray resp_bus_data = response_json.get("bus_data");
    //提取json列表中的第一个值,并提取authCode参数的值转换成字符串,赋予变量名称authCode
    String authCode = resp_bus_data.get(0).get("authCode").toString();
    //日志打印
    log.info("提取的值为:"+authCode);
    //将取出来的变量值赋予局部变量code
    vars.put("code",authCode);
    

方法二

  1. 采用阿里提供的fastjson包对json数据进行解析提取bus_data参数下的authCode参数的值。

    附上代码(代码意思与上述一样),如下所示:
    import com.alibaba.fastjson.*;
    
    String response = prev.getResponseDataAsString();
    
    JSONObject jsonObject = JSONObject.parseObject(response);
    JSONArray jsonArray = jsonObject.get("bus_data");
    
    String authCode = jsonArray.get(0).get("authCode").toString();
    log.info("提取的值为---->"+authCode);
    
    vars.put("code",authCode);
    
  2. 采用fastjson包对json数据解析提取的第二种方式:

    附上代码(代码意思与上述一样),如下所示:
    import com.alibaba.fastjson.*;
    
    String response = prev.getResponseDataAsString();
    // 将获取的响应数据转换成Json对象
    JSONObject jsonObject = JSON.parseObject(response);
    // 通过JSON路径格式提取json响应数据中参数的值(参数,json路径格式)
    String authCode = JSONPath.eval(jsonObject,"$.bus_data[0].authCode");
    log.info("提取的值为---->"+authCode);
    
    vars.put("code",authCode);
    

结尾

如果你觉得文章对你有帮助,请动起你们的小手手点下赞(大拇指)哈(一键三连更好),Thanks♪(・ω・)ノ。

以上是关于Jmeter之beanshell多种提取嵌套Json数据的主要内容,如果未能解决你的问题,请参考以下文章

jmeter之beanshell断言---数据处理

Jmeter之BeanShell变量使用讲解

Jmeter-BeanShell PostProcessor提取请求及响应结果并保存到本地文件

Jmeter之Bean shell使用

Jmeter BeanShell PostProcessor提取json数据

Jmeter(三十四)_Beanshell解析并提取json响应