在前段时间将JSON Extractor元件做了个简单的介绍:Jmeter元件——JSON Extractor后置处理器介绍1,今天以一个具体的json,以不同的方式提取数据做个详细的介绍。

一、模拟请求

使用java请求来模拟请求,入参json格式数据,以实例来讲解,具体如下

1.在线程组下添加一个java请求

2.类名称选择org.apache.jmeter.protocol.java.test.JavaTest

3.json数据填入ResultData中

4.运行该脚本,在结果树中查看结果

二、数据提取

json示例数据如下:

{"name":"温一壶清酒","url":"https://www.cnblogs.com/hong-fithing/","page":,"isNonProfit":true,"address":{"street":"科技园路","city":"上海","country":"中国"},"data":{"Jenkins系列博客":[{"name":"Jenkins环境搭建(1)-下载与安装","url":"https://www.cnblogs.com/hong-fithing/p/10290315.html","pageview":[,],"keywords":["jenkins"]},{"name":"Jenkins环境搭建(2)-搭建jmeter+ant+jenkins自动化测试环境","url":"https://www.cnblogs.com/hong-fithing/p/10462493.html","pageview":[,],"keywords":["jenkins","ant","jmeter"]},{"name":"Jenkins环境搭建(3)-配置自动发送邮件","url":"https://www.cnblogs.com/hong-fithing/p/10473996.html", "pageview":[,],"page":, "keywords":[ "jenkins", "邮件"]}],"UI自动化系列博客":[{"name":"UI自动化测试(一)简介及Selenium工具的介绍和环境搭建","url":"https://www.cnblogs.com/hong-fithing/p/7622215.html","pageview":,"keywords":[ "selenium","自动化"]},{"name":"UI自动化测试(二)浏览器操作及对元素的定位方法(xpath定位和css定位详解)","url":"https://www.cnblogs.com/hong-fithing/p/7623838.html","pageview":,"keywords":["xpath","css","自动化"]},{"name":"UI自动化测试(三)对页面中定位到的元素对象做相应操作","url":"https://www.cnblogs.com/hong-fithing/p/7625800.html","pageview":,"keywords":["自动化"]}]},"pageview": }

1.基本提取

$['name']
$.name

区别:
使用符号.只能获取一个子节点
使用中括号[]可以获取多个子节点的值
$["name","url"] 获取的是根节点下name节点和url节点,并不是值

$.data.Jenkins系列博客[*]
$.data.Jenkins系列博客

区别:

使用[*],表示获取data节点下 Jenkins系列博客 数组中元素的值
不使用[*] 表示获取data节点下 Jenkins系列博客 的值

$.data.Jenkins系列博客[]          表示获取 Jenkins系列博客 数组中第一个元素
$.data.Jenkins系列博客[,] 表示获取 Jenkins系列博客 数组中第一个/第三个元素

2.切片处理

切片处理,就类似于取数据的一个范围值,格式为:$.data.Jenkins系列博客[n:m]

说明:

n:表示数组元素的起始下标,如果不填写,则默认为0,表示从第一个开始
m:表示数组原因的结束下标,如果不填写,则默认为数组的最后一个
ps:是一个半闭半开区间,即包含起始下标,不包含结束下标

$.data.Jenkins系列博客[:]    提取数组中的所有元素
$.data.Jenkins系列博客[:] 提取第一个开始到最后的元素

$.data.Jenkins系列博客[-n:]    提取倒数n个元素
$.data.Jenkins系列博客[:-m] 提取不包含最后m个元素的其他元素

输入负值说明,如下:

$.data.*
$.data..*

.* 表示获取data节点下的所有子节点

..* 表示获取data节点下所有符合条件的所有节点

如下图所示:

3.过滤表达式

表达式是用于数组节点的过滤处理,用来找到符合要求的节点,因为json是无序的,格式为:[?(表达式)]

$.data.Jenkins系列博客[?(@.name == "Jenkins环境搭建(1)-下载与安装")].url

这个表达式可用sql来表达为:

select url from Jenkins系列博客 where name='Jenkins环境搭建(1)-下载与安装'

同样的取值,只是写法不一样而已

4.表达式操作

==、!= < <= > >=
=~ 正则匹配
in 存在于
nin 不存在于
subsetof 子集 || 或者
&& 并且

示例如下:

$.data.Jenkins系列博客[?(@.pageview > )]
$.data.Jenkins系列博客[?(@.name != "Jenkins环境搭建(1)-下载与安装")].pageview
$.data.Jenkins系列博客[?(@.pageview in [])]

如上简单表达式,就无须过多解释了,一看就明白。

来个正则匹配示例:

$.data.Jenkins系列博客[?(@.name =~ /Jenkins环境搭建(2).+/)]

表示从 Jenkins系列博客 获取 name 为Jenkins环境搭建(2)开头的元素

$.data.Jenkins系列博客[?(@.keywords.length() >= && @.name =~ /Jenkins环境搭建.+/)]

表示从 Jenkins系列博客 获取 keywords大于等于2 并且 name 为Jenkins环境搭建开头的元素

$.data.Jenkins系列博客[?(@.page == $.pageview)]

表示从 Jenkins系列博客 获取 page == 根节点下的pageview 的元素

再来讲个获取子集的表达式

$.data.Jenkins系列博客[?(@.keywords subsetof ["jmeter","jenkins","ant","邮件"])]

表示从 Jenkins系列博客 数组中,获取keywords为 jmeter jenkins ant 邮件 四者的子集的元素

修改表达式如下:

$.data.Jenkins系列博客[?(@.keywords subsetof ["jenkins","邮件","ant"])]

获取到的值如下:

jmeter中的JSON Extractor就介绍到这了,都是些很基础的使用方式,希望对需要的人有所帮助。

Jmeter元件——JSON Extractor后置处理器介绍2的更多相关文章

  1. Jmeter元件——JSON Extractor后置处理器

    场景使用 json extractor后置处理器用在返回格式为json的HTTP请求中,用来获取返回的json中的某个值.并保存成变量供后面的请求进行调用或断言等. 使用方法 1.常规操作 路径:选择 ...

  2. jmeter数据关联_后置处理器_正则表达式提取器

  3. Spring之BeanPostProcessor(后置处理器)介绍

      为了弄清楚Spring框架,我们需要分别弄清楚相关核心接口的作用,本文来介绍下BeanPostProcessor接口 BeanPostProcessor   该接口我们也叫后置处理器,作用是在Be ...

  4. 获取响应数据___JSON Extractor 后置处理器

    对于大部分请求返回的结果,都是json,有一个更方便使用的插件:JSON Extractor 不过得首先下载插件 https://jmeter-plugins.org/wiki/JSONPathExt ...

  5. Jmeter --Json Extractor (后置处理器)

    一.使用场景 Json Extractor 后置处理器用在返回格式为json的HTTP请求中, 用来获取返回的json中的某个值.并保存成变量供后面的请求进行调用或者断言等. 二.使用方法 1.创建H ...

  6. Jmeter 后置处理器

    1.JSON Extractor Json extractor 后置处理器用在返回格式为 Json 的 HTTP 请求中,用来获取返回的 Json 中的某个值.并保存成变量供后面的请求进行调用或断言等 ...

  7. Jmeter 后置处理器--jp@gc - JSON/YAML Path Extractor & JSON Extractor

    后置处理器--jp@gc - JSON/YAML Path Extractor 1.需要下载插件,地址: 解压后把对应jar包放置对应的lib和lib/ext目录下,重启Jmeter: 2.在需要提取 ...

  8. 通过JMETER后置处理器JSON Path Extractor插件来获取响应结果

    学生金币充值接口:该接口有权限验证,需要admin用户才可以做操作,需要添加cookie.cookie中key为登录的用户名,value从登录接口中获取,登陆成功之后会返回sign. 通常做法是在HT ...

  9. jmeter后置处理器 JSON Extractor取多个变量值

    1.需要获取响应数据的请求右键添加-后置处理器-JSON Extractor 2.如果要获取json响应数据多个值时,设置的Variable names (后续引用变量值的变量名设置)与JSON Pa ...

随机推荐

  1. 牛客NOIP暑期七天营-提高组5+普及组5

    ————提高组———— 第一题:deco的abs 题目链接:https://ac.nowcoder.com/acm/contest/934/A 因为每个数都可以加任意次 d ,所以可以推出 0 < ...

  2. java基础-对象的初始化

    一 前言 本节内容将会提到方法重载,对象的初始化,对象的构造器,和this关键字的使用,以及会简要的概括一下java中对象回收机制.觉得文章不错的读者可以关注一下作者的博客和公众号(同博客名称) 二 ...

  3. VS2019 开发Django(十)------JavaScript与Django的数据交互

    导航:VS2019开发Django系列 这一篇介绍如何使用BootStrap Table这个组件来绑定渲染数据, 1)先来看一下BootStrap Table是怎么绑定数据的. 通过数据属性 给定da ...

  4. 使用t-SNE做降维可视化

    最近在做一个深度学习分类项目,想看看训练集数据的分布情况,但由于数据本身维度接近100,不能直观的可视化展示,所以就对降维可视化做了一些粗略的了解以便能在低维空间中近似展示高维数据的分布情况,以下内容 ...

  5. WPF引用WinForm控件

    前言:在WPF开发当中由于DataGrid控件实现业务未达到非常理想的效果,我决定使用WinForm中的DataGridView来实现业务. 在XAML中加入以下命名空间: xmlns:wf=&quo ...

  6. 12-Factor与云原生

    12-Factor与云原生 云原生应用 今天先到这儿,希望对技术领导力, 企业管理,系统架构设计与评估,团队管理, 项目管理, 产品管理,团队建设 有参考作用 , 您可能感兴趣的文章: 精益IT组织与 ...

  7. super performSelector: 解决调用父类私有方法的问题

    super performSelector: 解决objc调用父类私有方法的问题 Objc中[super performSelector: ...]并不会像其他语言一样能良好的工作.super只是编译 ...

  8. 我也开源... React Native Messager

    近期有空,玩转React Native. https://github.com/andyc365/ReactNativeMessager React Native Messager A React N ...

  9. Sqlite—数据库备份与恢复

    数据库备份 例如:备份 /www/wwwroot 下面的 task.db 数据库 1.进入数据库 [root@localhost ~]# sqlite3 /www/wwwroot/task.db 2. ...

  10. Bash脚本编程之算术运算

    简介 Bash所支持的算术运算和C语言是一样的,这里指的是操作符(operator)以及它们的优先级(precedence).结合性(associativity)和值,详见Shell Arithmet ...