Jmeter JSON提取器
此提取器用于提取请求返回结果中的某个值或者某一组值,标准写法为$.key,其中key为返回结果map中的一个键,如果是多层则继续用.key进行即可,如果遇到key的value值为一个List,则使用.key[n],其中n为list中元素的编号,如下使用实例来说明下如何使用;
Json提取器语法说明
完整的语法说明详见JsonPath:
如有以下Json返回
{
"store": {
"book": [
{
"category": "reference",
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
},
{
"category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
},
{
"category": "fiction",
"author": "Herman Melville",
"title": "Moby Dick",
"isbn": "0-553-21311-3",
"price": 8.99
},
{
"category": "fiction",
"author": "J. R. R. Tolkien",
"title": "The Lord of the Rings",
"isbn": "0-395-19395-8",
"price": 22.99
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
},
"expensive": 10
}| JsonPath | 结果 |
| $.store.book[*].author | 全部书的作者 |
| $..author | 所有作者 |
| $.store.* | 店里所有,包括书和自行车 |
| $.store..price | 所有价格 |
| $..book[2] | 第三本书 |
| $..book[-2] | 倒数第二本书 |
| $..book[0,1] | 前两本书 |
| $..book[:2] | 从索引0(含)到索引2(不含)的所有书籍 |
| $..book[1:2] | 从索引1(含)到索引2(不含)的所有书籍 |
| $..book[-2:] | 最后两本书 |
| $..book[2:] | 从尾部到第二本书 |
| $..book[?(@.isbn)] | 所有带有ISBN编号的书籍 |
| $.store.book[?(@.price < 10)] | 店里所有标价低于10的书 |
| $..book[?(@.price <= $['expensive'])] | 店内所有价格低于“expensive”的书 |
| $..book[?(@.author =~ /.*REES/i)] | 与正则匹配的所有书籍(忽略大小写) |
| $..* | 返回Store的所有内容 |
| $..book.length() | 书的数量 |
调试方法:
在查看结果树(View Result Tree)中选择JSON Path Tester,即可展开如下图的右侧内容,输入表达式即可拿来测试书写的Json提取器表达式是否能正常工作:
从上图的输出可见返回的数组下标从0开始。
添加JSON提取器,获取所有author
添加调试取样器调试用,可看到获取到了所有作者的值。通过author_1,....author_22可得到每一个author。
将获取到每一个用户author循环进行“http请求”查看结果。
添加循环控制器,设置循环次数:author_matchNr从上面的JSON取样器中匹配到,这里进行变量引用
在循环控制器之下添加http请求,并做以下设置。
__counter为jmeter自带的一个计数函数,${__counter(,)}引用这个函数,每运行1次+1,从1开始;
author_${__counter(,)}运行第1次author_1,运行第2次author_2,以此类推,直到运行到循环次数author_4
__V为jmeter自带的一个嵌套变量函数,运行第1次author_${__counter(,)}为author_1,${__V(author_${__counter(,)},)}则为${author_1},值Nigel Rees;以此类推,一直循环到${author_4}








浙公网安备 33010602011771号