JMeter-json提取器
JSON提取器说明:
Apply to:应用范围
Names of created variables :接收值的变量名,自定义,多个变量用分号分隔
JSON Path expression: json path表达式,也是用分号分隔
Match No.(0 for Random):0表示随机;n取第几个匹配值;-1匹配所有。若只要获取到匹配的第一个值,则填写1
Compute concatenation var(suffix_ALL):如果找到许多结果,则插件将使用' , '分隔符将它们连接起来,并将其存储在名为<variable name> _ALL的var中
Default Values: 缺省值,匹配不到值的时候取该值,可写error。
运算符(Operators)
运算符 | 说明 |
---|---|
$ | 根元素 |
@ | 当前元素 |
* | 通配符,可以表示任何元素 |
.. | 递归搜索 |
. | 子节点(元素) |
['' (, '')] | 一个或者多个子节点 |
[ (, )] | 一个或者多个数组下标 |
[start:end] | 数组片段,区间为[start,end) |
[?()] | 过滤器表达式,其中表达式结果必须是 boolean 类型,如可以是比较表达式或者逻辑表达式 |
JsonPath 案例
JSON
{ "lemon":
{ "teachers": [ { "id": "101", "name": "华华", "addr": "湖南长沙", "age": 25 }, { "id": "102", "name": "韬哥", "age": 28 }, { "id": "103", "name": "Happy", "addr": "广东深圳", "age": 16 }, { "id": "104", "name": "歪歪", "addr": "广东广州", "age": 29 } ],
"salesmans":
[ { "id": "105", "name": "毛毛", "age": 17 }, { "id": "106", "name": "大树", "age": 27 } ]
}, "avg": 25 }
JsonPath 例子及说明
JsonPath | 路径说明 |
---|---|
$.lemon.teachers[*].name | 获取所有老师的的名称 |
$..name | 获取所有人的名称 |
$.lemon.* | 所有的老师和销售 |
$.lemon..age | 所有人的年龄 |
$..age | 所有人的年龄 |
$.lemon.teachers[*].age | 所有老师的年龄 |
$.lemon.teachers[3] | 索引为 3(第 4 个)老师的信息 |
$..teachers[3] | 索引为 3(第 4 个)老师的信息 |
$.lemon.teachers[-2] | 倒数第 2 个老师的信息 |
$..teachers[-2] | 倒数第 2 个老师的信息 |
$..teachers[1,2] | 第 2 到第 3 个老师的信息 |
$..teachers[:2] | 索引 0(包含)到索引 2(不包含)的老师信息 |
$..teachers[1:3] | 索引 1(包含)到索引 3(不包含)的老师信息 |
$..teachers[-2:] | 最后的两个老师的信息 |
$..teachers[2:] | 索引 2 开始的所有老师信息 |
$..teachers[?(@.addr)] | 所有包含地址的老师信息(jsonpath_rw 不支持) |
$.lemon.teachers[?(@.age < 20)] | 所有年龄小于 20 的年龄信息(jsonpath_rw 不支持) |
注:提取多个值时,变量名用分号隔开,表达式也用分号隔开