热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:Jmeter之Json提取器详解(史上最全)

本文由编程笔记#小编为大家整理,主要介绍了Jmeter之Json提取器详解(史上最全)相关的知识,希望对你有一定的参考价值。 参考资料:https://www.bbsmax.com/A/D854lmB
本文由编程笔记#小编为大家整理,主要介绍了Jmeter之Json提取器详解(史上最全)相关的知识,希望对你有一定的参考价值。


参考资料:https://www.bbsmax.com/A/D854lmBw5E/

Jsonpath在线测试:http://jsonpath.com/




实际工作中用到的一些场景:



  1. 提取某个特定的值

  2. 提取多个值

  3. 按条件取值

  4. 阵列取值(返回所有元素的列表/数组)

  5. 提取多个值


Jsonpath提取器需要另外安装



  • 下载plugins-manager.jar加入其加入JMETER_HOME/lib/ext目录,

  • 重新启动JMeter,

  • 点击Options > Plugins Manager顶部菜单,

  • 选择Available Plugins标签,

  • 选择Json Plugins并双击应用更改并重新启动JMeter。

使用方法:

Json Path提取器应放在HTTP Sampler下。可设置的参数有:



  • 变量名称:分号单独的变量名称,

  • JSON Path Expressions:从json响应中提取内容的表达式,

  • 匹配数字:-1对于所有,0对于随机的,n对于第n个,

  • Compute concatenation var:创建一个${foo_ALL}包含所有提取值的串联的变量,

  • 默认值:如果表达式不适用于正在处理的json文档,使用此处给定的默认值。

接下来用一个实际案例来演示Json提取的一些用法:

示例:有如下json

{
"code": 0,
"data": {
"total": 10,
"pageNo": 1,
"pageSize": 100,
"items": [
{
"friendHeadLogoUrl": null,
"msg": "你好,我仰慕你的才华!",
"shield": 0,
"star": 0,
"friendNickname": "Auto",
"origin": 202,
"black": 0,
"memo": null,
"updateTime": 1591169560056,
"type": 2,
"userId": 1268082752079560705,
"friendId": 1267735865761759234,
"createTime": 1591169490879,
"blackUpdateTime": 0,
"addUpdateTime": 1591169560056,
"id": 1268082870707040258,
"close": 0,
"status": 2
},
{
"friendHeadLogoUrl": null,
"msg": "你好,我仰慕你的才华!",
"shield": 0,
"star": 0,
"friendNickname": "Auto",
"origin": 202,
"black": 0,
"memo": null,
"updateTime": 1591169560092,
"type": 2,
"userId": 1268082752079560705,
"friendId": 1267735866185383938,
"createTime": 1591169491390,
"blackUpdateTime": 0,
"addUpdateTime": 1591169560092,
"id": 1268082872854523906,
"close": 0,
"status": 2
},
{
"friendHeadLogoUrl": null,
"msg": "你好,我仰慕你的才华!",
"shield": 0,
"star": 0,
"friendNickname": "Auto",
"origin": 202,
"black": 0,
"memo": null,
"updateTime": 1591169560126,
"type": 2,
"userId": 1268082752079560705,
"friendId": 1267735867363983362,
"createTime": 1591169491862,
"blackUpdateTime": 0,
"addUpdateTime": 1591169560126,
"id": 1268082874830041089,
"close": 0,
"status": 2
},
{
"friendHeadLogoUrl": null,
"msg": "你好,我仰慕你的才华!",
"shield": 0,
"star": 0,
"friendNickname": "Auto",
"origin": 202,
"black": 0,
"memo": null,
"updateTime": 1591169560164,
"type": 2,
"userId": 1268082752079560705,
"friendId": 1267735867825356802,
"createTime": 1591169492296,
"blackUpdateTime": 0,
"addUpdateTime": 1591169560164,
"id": 1268082876654563330,
"close": 0,
"status": 2
},
{
"friendHeadLogoUrl": null,
"msg": "你好,我仰慕你的才华!",
"shield": 0,
"star": 0,
"friendNickname": "Auto",
"origin": 202,
"black": 0,
"memo": null,
"updateTime": 1591169560310,
"type": 2,
"userId": 1268082752079560705,
"friendId": 1267735867003273217,
"createTime": 1591169493876,
"blackUpdateTime": 0,
"addUpdateTime": 1591169560310,
"id": 1268082883277369345,
"close": 0,
"status": 2
},
{
"friendHeadLogoUrl": null,
"msg": "你好,我仰慕你的才华!",
"shield": 0,
"star": 0,
"friendNickname": "Auto",
"origin": 202,
"black": 0,
"memo": null,
"updateTime": 1591169560376,
"type": 2,
"userId": 1268082752079560705,
"friendId": 1267735868571942913,
"createTime": 1591169494629,
"blackUpdateTime": 0,
"addUpdateTime": 1591169560376,
"id": 1268082886439874561,
"close": 0,
"status": 2
}
],
"timestamp": null
},
"codeMsg": "success"
}

1、提取某个特定的值























Jsonpath结果
$.data.total10
$..total10
$..items[1].userId1268082752079560705

2、提取多个值



  • 比如要提取items列表里所有的friendId

$..friendId

$..[*].friendId

$.data.items[*].friendId

三种写法都可以,结果为:

Result[0]=1267735865761759234
Result[1]=1267735866185383938
Result[2]=1267735867363983362
Result[3]=1267735867825356802
Result[4]=1267735864650268673
Result[5]=1267735865363300353
Result[6]=1267735866688700417
Result[7]=1267735867003273217
Result[8]=1267735868232204289
Result[9]=1267735868571942913

注意:



  1. 使用时,需要用下标读取,如${friend_id_1}、${friend_id_2}........



  2. 特别说明一下,如果想要获取返回元素的数量,可以用${friend_id_matchNr}



  3. 也可以使用foreach控制器循环读取,这里不再描述。




3、按条件提取值

有时候只需要提取某个特定条件下的参数,比如现在想要提取创建时间为1591169490879的friendId

$.data.items[?(@.createTime ==1591169490879)].friendId


4、阵列提取

提取任何节点的某个key的值,比如提取friendId
$..friendId

结果为:

friend_all_1=1267735865761759234
friend_all_10=1267735868571942913
friend_all_2=1267735866185383938
friend_all_3=1267735867363983362
friend_all_4=1267735867825356802
friend_all_5=1267735864650268673
friend_all_6=1267735865363300353
friend_all_7=1267735866688700417
friend_all_8=1267735867003273217
friend_all_9=1267735868232204289
friend_all_ALL=1267735865761759234,1267735866185383938,1267735867363983362,1267735867825356802,1267735864650268673,1267735865363300353,1267735866688700417,1267735867003273217,1267735868232204289,1267735868571942913
friend_all_matchNr=10

_ALL下标是将所有元素组成一个list,像后续接口有时候参数是以数组形式来传参,这个函数就很有用,如果需要返回此函数,需要在json提取器中,勾选Compute concatenation var


5、提取多个值

json表达式:

$..[‘msg‘,‘friendId‘]

返回的变量如下:

two_1={"msg":"你好,我仰慕你的才华!","friendId":1267735865761759234}
two_10={"msg":"你好,我仰慕你的才华!","friendId":1267735868571942913}
two_2={"msg":"你好,我仰慕你的才华!","friendId":1267735866185383938}
two_3={"msg":"你好,我仰慕你的才华!","friendId":1267735867363983362}
two_4={"msg":"你好,我仰慕你的才华!","friendId":1267735867825356802}
two_5={"msg":"你好,我仰慕你的才华!","friendId":1267735864650268673}
two_6={"msg":"你好,我仰慕你的才华!","friendId":1267735865363300353}
two_7={"msg":"你好,我仰慕你的才华!","friendId":1267735866688700417}
two_8={"msg":"你好,我仰慕你的才华!","friendId":1267735867003273217}
two_9={"msg":"你好,我仰慕你的才华!","friendId":1267735868232204289}
two_ALL={"msg":"你好,我仰慕你的才华!","friendId":1267735865761759234},{"msg":"你好,我仰慕你的才华!","friendId":1267735866185383938},{"msg":"你好,我仰慕你的才华!","friendId":1267735867363983362},{"msg":"你好,我仰慕你的才华!","friendId":1267735867825356802},{"msg":"你好,我仰慕你的才华!","friendId":1267735864650268673},{"msg":"你好,我仰慕你的才华!","friendId":1267735865363300353},{"msg":"你好,我仰慕你的才华!","friendId":1267735866688700417},{"msg":"你好,我仰慕你的才华!","friendId":1267735867003273217},{"msg":"你好,我仰慕你的才华!","friendId":1267735868232204289},{"msg":"你好,我仰慕你的才华!","friendId":1267735868571942913}
two_matchNr=10


推荐阅读
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 本文提供了关于数据库设计的建议和注意事项,包括字段类型选择、命名规则、日期的加入、索引的使用、主键的选择、NULL处理、网络带宽消耗的减少、事务粒度的控制等方面的建议。同时还介绍了使用Window Functions进行数据处理的方法。通过遵循这些建议,可以提高数据库的性能和可维护性。 ... [详细]
  • 本文讨论了在使用Git进行版本控制时,如何提供类似CVS中自动增加版本号的功能。作者介绍了Git中的其他版本表示方式,如git describe命令,并提供了使用这些表示方式来确定文件更新情况的示例。此外,文章还介绍了启用$Id:$功能的方法,并讨论了一些开发者在使用Git时的需求和使用场景。 ... [详细]
  • Summarize function is doing alignment without timezone ?
    Hi.Imtryingtogetsummarizefrom00:00otfirstdayofthismonthametric, ... [详细]
  • vue使用
    关键词: ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • IhaveconfiguredanactionforaremotenotificationwhenitarrivestomyiOsapp.Iwanttwodiff ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 如何更改电脑系统的自动校时服务器地址?
    本文介绍了如何通过注册表编辑器更改电脑系统的自动校时服务器地址。通过修改注册表中的数值数据或新建字符串数值的方式,可以将默认的时钟同步服务器地址更改为自己所需要的域名或IP地址。详细步骤包括双击时间区域,点击internet时间,勾选自动校正域名设置定时等操作。 ... [详细]
  • 获取时间的函数js代码,js获取时区代码
    本文目录一览:1、js获取服务器时间(动态)2 ... [详细]
author-avatar
客户服务部小谢娟_387
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有