JMeter在里面Json数据处理方法
http://eclipsesource.com/blogs/2014/06/12/parsing-json-responses-with-jmeter/
Json作为一种数据交换格式在网络开发。特别是Ajax与Restful架构中应用的越来越广泛。而Apache的JMeter也是较受欢迎的压力測试工具之中的一个,可是它本身没有提供对于Json数据的响应处理。
本文中如果须要从HTTP的响应头中返回的Json格式的数据流中抽取某些特定的数据,数据格式例如以下:
{
"name":"Simpsons family",
"members":[
{"firstName":"Homer", "lastName":"Simpson"},
{"firstName":"Marge", "lastName":"Simpson"},
{"firstName":"Bart", "lastName":"Simpson"},
{"firstName":"Lisa", "lastName":"Simpson"},
{"firstName":"Maggie", "lastName":"Simpson"}
]
}
以下我们使用不同的方法来进行数据的抽取工作:
正則表達式提取
JMeter安装了正則表達式插件之后。能够依照固定的格式从字符串中提取数据,而本例中正則表達式例如以下所看到的:
"firstName":"(.+?)"
使用了该表达式之后会返回全部服从表达式的字符串,可是仅仅有一个表达式是我们所关注的。能够使用$1$来作为模板,而3则会返回第三个数据。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd3h5eXhjMTk5Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
当偶尔须要对Json数据进行处理时,正則表達式是一个合适的选择,它的一个优势在于JMeter本身就内置了Json处理模块。
可是。阅读处理正則表達式却是比較复杂的,特别是对于某些复杂的Json数据。
JMeter JSON插件
还有一种处理Json数据的方法是使用JMeter的插件。该插件能够使用JSONPath来获取JSON数据中特定位置的数据。
类似于XML文件里的XPath,JSONPath能够使用简单的表达式来操作Json对象。
JSON Path Extractor是一个开源的添加了post处理器的插件,能够将该插件的Lib文件复制到JMeter的lib文件夹下就可以。
而上文中提及的须要定位的数据能够使用例如以下的JSONPath进行描写叙述:
$.members[2].firstName
在JMeter中,仅仅须要从PostProcessor菜单中打开JSON Path Extractor然后输入变量名与默认值就可以,例如以下所看到的:
JSONPath表达式较短而且易于阅读,可以有效提高測试脚本的易维护性,该插件并不随着标准的JMeter一起安装。
BeanShell Post Processor
最后一种方法即是借用了JMeter的对于BeanShell支持的特性,BeanShell是一个轻量级的面向Java的脚本语言。BeanShell Post Processor同意使用标准的Java语法来处理Json数据,用法例如以下图所看到的:
总结
本文列举出了三种可用的从Json格式的返回值中提取数据的方法,正則表達式对于简单的Json格式的数据的高速标准化很占优势。
而JsonPath插件能够用于创建能够被维护改动的脚本。可是须要额外的插件安装工作。而最后的带JSON库的BeanShell事实上,非常具体和依赖Java该语言的灵活性可以进一步发展。
JMeter在里面Json数据处理方法的更多相关文章
- JSON数据处理框架Jackson精解第一篇-序列化与反序列化核心用法
Jackson是Spring Boot默认的JSON数据处理框架,但是其并不依赖于任何的Spring 库.有的小伙伴以为Jackson只能在Spring框架内使用,其实不是的,没有这种限制.它提供了很 ...
- JMeter 中对于Json数据的处理方法
JMeter中对于Json数据的处理方法 http://eclipsesource.com/blogs/2014/06/12/parsing-json-responses-with-jmeter/ J ...
- iOS开发——数据解析Swift篇&简单json数据处理
简单json数据处理 //loadWeather var url = NSURL(string: "http://www.weather.com.cn/adat/sk/101240701.h ...
- Oracle解析复杂json的方法
问题背景: 当前在Oracle数据库(11G之前的版本)解析json没有可以直接使用的系统方法,网上流传的PLSQL脚本大多也只可以解析结构较单一的json串,对于结构复杂的json串还无法解析.如此 ...
- python接口自动化(十九)--Json 数据处理---实战(详解)
简介 上一篇说了关于json数据处理,是为了断言方便,这篇就带各位小伙伴实战一下.首先捋一下思路,然后根据思路一步一步的去实现和实战,不要一开始就盲目的动手和无头苍蝇一样到处乱撞,撞得头破血流后而放弃 ...
- Oracle解析复杂json的方法(转)
转:Oracle解析复杂json的方法 问题背景: 当前在Oracle数据库(11G之前的版本)解析json没有可以直接使用的系统方法,网上流传的PLSQL脚本大多也只可以解析结构较单一的json串, ...
- JavaScript转换与解析JSON的方法
在JavaScript中将JSON的字符串解析成JSON数据格式,一般有两种方式: 一种为使用eval()函数. 使用Function对象来进行返回解析. 使用eval函数来解析,jquery的eac ...
- C#中对象,字符串,dataTable、DataReader、DataSet,对象集合转换成Json字符串方法。
C#中对象,字符串,dataTable.DataReader.DataSet,对象集合转换成Json字符串方法. public class ConvertJson { #region 私有方法 /// ...
- JavaScript操作JSON的方法总结,JSON字符串转换为JSON对象
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意 ...
随机推荐
- 运行phpize时出现:Cannot find autoconf. Please check your autoconf installation
运行/usr/local/webserver/php/bin/phpize时出现:Configuring for:PHP Api Version: 20041225Zend Module Api No ...
- 【转】教你爱上Blocks(闭包)
Block 与传统代码相比较更加轻量,调用简洁方便,而且可以返回多个参数,使用Block可以让代码更加具有易读性,而我们在写回调时,也可以直接写在函数内部,而不用再去写一个回调函数 Block 闭包 ...
- 从零开始学java(小游戏 石头剪刀布)
Game.java package com.java;import java.util.Scanner;public class Game { private Player player ...
- 如何根据Jquery实现两级联动
<script language="javascript" type="text/javascript" > $(function (){ ...
- jquery 工作空间注册
在一些面向对象的语言中有命名空间的概念,好处就是把不同的类放在不同的文件夹下面,这样就不会发生命名冲突,当然命名空间还有其他的作用. 在这里我们讨论的是在JS中怎么使用命名空间.当然JS并没有提供原生 ...
- FLEX 网格布局及响应式处理
上一篇文章用Flex实现BorderLayout,这一章我们来实现常用的网格布局和响应式处理. 首先我们定义HTML结构,主Box为grid,每项为grid-cell,下面就是我们HTML代码结构. ...
- php 面向对象编程实例 __construct 和 __destruct 区别
大多数类都有一种称为构造函数的特殊方法.当创建一个对象时,它将自动调用构造函数,也就是使用new这个关键字来实例化对象的时候自动调用构造方 法.构 造函数的声明与其它操作的声明一样,只是其名称必须是_ ...
- Spark Executor Driver资源调度小结【转】
一.引子 在Worker Actor中,每次LaunchExecutor会创建一个CoarseGrainedExecutorBackend进程,Executor和CoarseGrainedExecut ...
- TCP回射客户程序:str_cli函数
str_cli函数完成客户处理循环: 从标准输入读入一行文本,写到服务器上,读回服务器对该行的回射,并把回射行写到标准输出上 读入一行,写到服务器 fgets读入一行文本,writen把该行发送给服务 ...
- js-ajax实现获取xmlHttp对象
//获取xmlHttp对象 function createXMLHttp() { var xmlhttp; //对于大多数浏览器适用 if (window.XMLHttpRequest) { xmlh ...