美文网首页JMeterApache JMeter互联网软件测试
Jmeter对Json格式数据的三种处理方式

Jmeter对Json格式数据的三种处理方式

作者: 道韫 | 来源:发表于2016-06-14 11:03 被阅读8234次

Json 作为一种数据交换格式在网络开发,特别是 RESTful(Representational State Transfer)架构中应用得越来越广泛。Jmeter是一款很适合做接口和性能的测试工具,对于下面这一段Json 格式的响应报文我们可以在jmeter里面使用三种不同的方法来进行数据的抽取工作。

{
:   "code":"000000",
:   "data":
:   {
:   :   "pageCount":"1",
:   :   "prizeLists":
:   :   [
:   :   :   {
:   :   :   :   "cellphoneNum":"134****0001",
:   :   :   :   "prizeId":"1000005",
:   :   :   :   "prizeName":"10元话费"
:   :   :   },
:   :   :   {
:   :   :   :   "cellphoneNum":"134****0001",
:   :   :   :   "prizeId":"1000007",
:   :   :   :   "prizeName":"4元话费"
:   :   :   }
:   :   ],
:   :   "totalCount":"2"
:   },
:   "msg":"成功"
}

1)使用正则表达式提取prizeName的第二个值
在Sampler上面添加后置处理器-->正则表达式提取器,


引用名称:其他地方引用提取值的变量名称,这里填写的是:prizeNameValue,具体的引用方式是${prizeNameValue}。
正则表达式:提取内容的正则表达式【()表示提取,对于你要提前的内容需要用小括号括起来】。
模板:用$$引用起来,如果在正则表达式中有多个提取表达式(多个括号括起来的部分),则可以是$1$,$2$等等,表示解析到的第几个值给prizeNameValue,正则表达式的提取模式,值从1开始,值0对应的是整个匹配的表达式。
匹配数字(0代表随机):0代表随机,-1代表所有,其余正整数代表将在已提取的内容中第几个匹配的内容。这里需要提取的是第二个匹配的值。
缺省值:正则匹配失败时取的值。
可以在jmeter中添加Sampler -->Debug Sampler来看正则表达式的取值。


从上图中可以看出提取到的prizeNameValue的值是4元话费。
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
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

String json=prev.getResponseDataAsString();
JSONObject jso = JSON.parseObject(json);
JSONObject data = jso.getJSONObject("data");
JSONArray prizeLists = data.getJSONArray("prizeLists");

vars.put("prizeNameValue",prizeLists.getJSONObject(1).getString("prizeName"));

在DebugSampler的结果中可以看到prizeNameValue的取值是4元话费。


总结
  本文列举出了三种可用的从 Json 格式的返回值中提取数据的方法。正则表达式对于简单的 Json 格式数据的处理非常快速标准化,JsonPath 插件可以创建能够被维护的脚本,引入fastjson库的BeanShell 依赖于 Java 语言的灵活性可以进行进一步的开发。大家可以根据自己的习惯和喜好选择任意一种进行数据的提取。

相关文章

  • Jmeter对Json格式数据的三种处理方式

    Json 作为一种数据交换格式在网络开发,特别是 RESTful(Representational State T...

  • Jmeter对Json数据的三种处理方式

    现在的接口测试中,大多数请求响应的报文格式都为json格式。那么在Jmeter接口测试中如何对json格式的数据进...

  • Jmeter - Beanshell 获取响应结果(json数据

    jmeter http请求响应报文为 json格式, 数据如下: 1、导入 net.sf.json.* 所需要的包...

  • Json

    Json:数据交换格式中的一种 数据交换格式有三种:Json/XML/Protobuffer 特点:独立于编程语言...

  • 06-数据提取-概念和分类

    爬虫中数据的分类:结构化数据:json,xml等json:可以通过键值对获取的数据处理方式:json、jsonpa...

  • JSON

    JSON : JavaScript Object Notation,首选的数据交换格式 1. json数据格式 对...

  • Json

    JSON是一种简单数据格式,它有三种数据结构: 键值对 —— Name/Value (Key/Value){ “f...

  • MJExtension处理JSON数据简述

    一般的处理方式: 网络请求->拿到返回数据(目前比较流行的跨平台格式语言为json)->根据返回数据生成数据模型类...

  • 2018-09-22

    xml格式和Json格式 JMeter框架 --设置默认值 --http请求 --断言 --信息头

  • day12-json和异常捕获

    12.1 json数据 1.什么是json数据json是一种数据格式,满足json格式的数据就是json数据。文件...

网友评论

    本文标题:Jmeter对Json格式数据的三种处理方式

    本文链接:https://www.haomeiwen.com/subject/baeydttx.html