zoukankan      html  css  js  c++  java
  • 转:Jmeter对Json格式数据的三种处理方式

     1 {
     2 :   "code":"000000",
     3 :   "data":
     4 :   {
     5 :   :   "pageCount":"1",
     6 :   :   "prizeLists":
     7 :   :   [
     8 :   :   :   {
     9 :   :   :   :   "cellphoneNum":"134****0001",
    10 :   :   :   :   "prizeId":"1000005",
    11 :   :   :   :   "prizeName":"10元话费"
    12 :   :   :   },
    13 :   :   :   {
    14 :   :   :   :   "cellphoneNum":"134****0001",
    15 :   :   :   :   "prizeId":"1000007",
    16 :   :   :   :   "prizeName":"4元话费"
    17 :   :   :   }
    18 :   :   ],
    19 :   :   "totalCount":"2"
    20 :   },
    21 :   "msg":"成功"
    22 }
    1)使用正则表达式提取prizeName的第二个值
    在Sampler上面添加后置处理器-->正则表达式提取器
    引用名称:其他地方引用提取值的变量名称,这里填写的是:prizeNameValue,具体的引用方式是${prizeNameValue}。
    正则表达式:提取内容的正则表达式【()表示提取,对于你要提前的内容需要用小括号括起来】。
    模板:用$$引用起来,如果在正则表达式中有多个提取表达式(多个括号括起来的部分),则可以是$1$,$2$(表示匹配第一个括号的内容还是第二个括号的内容)等等,表示解析到的第几个值给prizeNameValue,正则表达式的提取模式,值从1开始,值0对应的是整个匹配的表达式。
    匹配数字(0代表随机):0代表随机,-1代表所有,其余正整数代表将在已提取的内容中第几个匹配的内容。这里需要提取的是第二个匹配的值。
    缺省值:正则匹配失败时取的值。
    可以在jmeter中添加Sampler -->Debug Sampler来看正则表达式的取值。
    2)使用 JMeter 的插件JSONPath 来获取 JSON 数据中特定位置的数据
    在jmeter的plugins网站http://jmeter-plugins.org/downloads/all/ 选择 JMeterPlugins-ExtrasLibs-X.X.X.zip下载,解压以后将lib和lib/ext中的jar包放到jmeter安装目录对应位置,然后重启jmeter。
    在Sampler上面添加后置处理器-->jp@gc - JSON Path Extractor,
    在DebugSampler的结果中可以看到prizeNameJson的取值是4元话费。
    3)使用JMeter的BeanShell Post Processor来处理Json数据
    将fastjson.jar 拷贝到 jmeter lib 文件夹下后重启 jmeter
    在Sampler上面添加后置处理器-->BeanShell PostProcessor
     1 import com.alibaba.fastjson.JSON;
     2 import com.alibaba.fastjson.JSONArray;
     3 import com.alibaba.fastjson.JSONObject;
     4 
     5 String json=prev.getResponseDataAsString();
     6 JSONObject jso = JSON.parseObject(json);
     7 JSONObject data = jso.getJSONObject("data");
     8 JSONArray prizeLists = data.getJSONArray("prizeLists");
     9 
    10 vars.put("prizeNameValue",prizeLists.getJSONObject(1).getString("prizeName"));
    在DebugSampler的结果中可以看到prizeNameValue的取值是4元话费。
    总结
      本文列举出了三种可用的从 Json 格式的返回值中提取数据的方法。正则表达式对于简单的 Json 格式数据的处理非常快速标准化,JsonPath 插件可以创建能够被维护的脚本,引入fastjson库的BeanShell 依赖于 Java 语言的灵活性可以进行进一步的开发。大家可以根据自己的习惯和喜好选择任意一种进行数据的提取。
  • 相关阅读:
    C#动态方法调用
    递归查询SQL语句
    Jquery获取下拉选择节点名称值赋给textbox文本框 获取 父节点的栏目名称编号
    C# 获取指定目录下所有文件信息
    引用借以记录借鉴 实现记住密码和自动登录功能
    摘用的一个实现在线发送短信接口功能
    Winform文件夹图片批量压缩整理修改
    安装包部署项目简述
    一道不错的考试题
    利用ItextSharp 生成PDF文档改进版
  • 原文地址:https://www.cnblogs.com/by170628/p/7251265.html
Copyright © 2011-2022 走看看