在使用Apache JMeter进行API测试时,我们经常需要从JSON格式的响应中提取特定字段的值。这可以通过使用JMeter内置的JSON提取器和正则表达式提取器来完成。以下是一个具体的例子,展示了如何从一个JSON响应中提取rowId的值,同时处理字符串终止符。

假设我们有以下JSON响应:

{
"flag": "success",
"formulaStatus": -1,
"encryption": "0",
"changestate": 1,
"href": "/pf/ovdf/bd/openPage?pr=od&ll=115dfc704f96b039825a66f15b04&rowId=D96DB6B24EEE412BB0DE7E728EE193E6",
"closer": false
}

我们的目标是提取rowId参数的值D96DB6B24EEE412BB0DE7E728EE193E6。这个值不是直接作为JSON对象的一个属性呈现的,而是作为一个URL的一部分,嵌套在href字段中。因此,我们需要两步来提取这个值。

步骤 1: 提取href字段

首先,我们使用JSON提取器来捕获href字段的值。JSON提取器可以直接从JSON结构中提取值。我们可以按照以下步骤配置JSON提取器:

  1. 添加JSON提取器到请求:在JMeter中,选择HTTP请求组件,然后右键选择“添加” -> “后置处理器” -> “JSON提取器”。
  2. 配置JSON提取器:在JSON提取器的配置界面中,设置以下参数:
    • 变量名称extractedHref
    • JSON路径表达式$.href
    • 默认值NOT_FOUND

这样配置后,如果JSON响应格式正确,extractedHref变量将包含href字段的完整URL字符串。

步骤 2: 从URL中提取rowId

接下来,我们需要从extractedHref变量中提取rowId的值。我们可以使用正则表达式提取器来完成这个任务:

  1. 添加正则表达式提取器:在JSON提取器下面,右键选择“添加” -> “后置处理器” -> “正则表达式提取器”。
  2. 配置正则表达式提取器:在正则表达式提取器的配置界面中,设置以下参数:
    • 应用到变量extractedHref
    • 正则表达式rowId=([^&"]+)
    • 模板$1$
    • 匹配编号1
    • 默认值NOT_FOUND

在这个正则表达式中,rowId=([^&"]+)的意思是查找rowId=之后的任何字符序列,直到遇到&"或字符串结束。圆括号()表示捕获组,用于提取匹配的部分。这样修改后,正则表达式将在遇到引号"时停止匹配,这可以防止提取到额外的字符,如在JSON响应中紧跟rowId值后的引号和其他字段。

结论

通过以上步骤,我们可以有效地从JSON响应中提取rowId的值。这种方法不仅适用于本例,也可以广泛应用于需要从嵌套信息中提取数据的场景。JMeter的强大功能使得它成为API测试和数据提取的强有力工具。

使用JMeter从JSON响应的URL参数中提取特定值的更多相关文章

  1. JMETER从JSON响应中提取数据

    如果你在这里,可能是因为你需要使用JMeter从Json响应中提取变量. 好消息!您正在掌握掌握JMeter Json Extractor的权威指南.作为Rest API测试指南的补充,您将学习掌握J ...

  2. 如何使用JMETER从JSON响应中提取数据

    如果你在这里,可能是因为你需要使用JMeter从Json响应中提取变量. 好消息!您正在掌握掌握JMeter Json Extractor的权威指南.作为Rest API测试指南的补充,您将学习掌握J ...

  3. 将json转为复杂url参数

    //json转url参数 var parseParam = function(param, key) { var paramStr = ""; if (param instance ...

  4. url编码 中文在url参数中传递,在请求头,响应头中传递,是如何编码的呢?

    一定要编码成url的吗?还是url自动把接受的汉字编码,请求头响应头到达之后再自动编码成汉字?这样似乎比较合理哦 先把iso8859-1 转换成 utf-8,在mvc中处理,然后响应的时候在转成iso ...

  5. 将json格式转为url参数格式的方法(xjl456852整理修改)

    测试页面: <html> <head> <script type="text/javascript" src="jquery-1.11.3. ...

  6. url参数中出现+、空格、=、%、&、#等字符的解决办法

    url出现了有+,空格,/,?,%,#,&,=等特殊符号的时候,可能在服务器端无法获得正确的参数值,如何是好?解决办法将这些字符转化成服务器可以识别的字符,对应关系如下:URL字符转义 用其它 ...

  7. 前端url参数中带有callback并产生错误

    错误截图: 初步诊断是由于后端返回值的数据格式不正确造成的 解决方式: 1).接受在springmvc中接受callback参数 2).将对象转为Object 3).拼接callback方法,其中返回 ...

  8. url参数中带有+号,服务器端解码之后没了

    解决办法: 客户端:encodeURIComponent 服务器端:Uri.UnescapeDataString 参考网址:http://www.cnblogs.com/artwl/archive/2 ...

  9. URL参数中加号“+”丢失的问题

    Java解决方法(推荐) URLEncoder.encode(urlParams,"UTF-8");

  10. Angularjs中使用$location获取url参数时,遇到的坑~~~

    今天在开发时候,需要用到Angularjs1.4.6获取url参数,网上查了一下,有部分文章提到用$location来获取.大致方法如下 var app = angular.module('myApp ...

随机推荐

  1. ABC 305

    题目列表 前三题过水,第四题分类讨论两个端点之间的距离和所在位置是清醒或睡眠 即可. E 题意:一张图上有一些结点有保安,每个保安有不同的警戒度 \(h_i\),定义 一个结点是安全的 为这个结点可以 ...

  2. NC24949 [USACO 2008 Jan S]Running

    题目链接 题目 题目描述 The cows are trying to become better athletes, so Bessie is running on a track for exac ...

  3. 《.NET物联网从零开始系列》-开篇

    近日搞硬件网关时,那些残存的数电.模电和通信原理的记忆时常在脑海中萦绕: 想起来多年前看张高兴的博客学会了.netcore+树莓派进行物联网开发. 使用dragonboard(龙板)搭载windows ...

  4. 【MySQL】数据库设计(一)三大范式

    三大范式 1NF 第一范式 强调列的原子性,即列不可分 例如: 2NF 第二范式 前提是1NF,另外包含两个部分: 表必须具有一个主键: 没有包含在主键中的列必须完全依赖于主键,而不是只依赖主键的一部 ...

  5. npm模块全局安装后无法使用解决方案

    好家伙 npm模块全局安装后无法使用   估计是少配了环境变量 1.使用命令: npm config get prefix 找到全局包的安装位置   2.随后我们右键"我的电脑"打 ...

  6. Java 重写引入

    1 package com.bytezero.override; 2 /* 3 * 方法的重新(override/overwrite) 4 * 5 * 1.重写:子类继承父类以后,可以对父类中同名同参 ...

  7. .Net下的CORS跨域设置

    CORS跨域访问问题往往出现在"浏览器客户端"通过ajax调用"服务端API"的时候.而且若是深究原理,还会发现跨域问题其实还分为[简单跨域]与[复杂跨域]这两 ...

  8. vue3使用路由keep-alive和监听路由实现transition

    随着vue3.0的发布,vue-router发布了4.0版本,文档 很明了,提供了vue2路由到vue3的变化和写法指导. vue2: // transition <transition nam ...

  9. 内部UI自动化测试培训之python基础

    这个文档的由来是公司内部UI自动化测试培训的资料.部门为了减少测试工作量,准备做UI自动化测试.我写python,其他同事都是java,所以python基础和UI自动化测试selenium的培训就由我 ...

  10. PaddleOCR 服务化部署(基于PaddleHub Serving)

    最近用到百度飞桨的 PaddleOCR,研究了一下PaddleOCR的服务化部署,简单记录一些部署过程和碰到的问题. 基础环境 paddlepaddle 2.5.2 python 3.7 paddle ...