设定有请求B参数化了一些参数,然后要把请求A的部分响应参数传递给请求B

1.打开JSON Extractor

线程组/某个请求-右键-Add-Post Processors-JSON Extractor

jmeterjson提取器 default values默认未为null jmeter的json提取器怎么提取数组_结点

2.JSON Extractor 常用可配置项

jmeterjson提取器 default values默认未为null jmeter的json提取器怎么提取数组_结点_02


jmeterjson提取器 default values默认未为null jmeter的json提取器怎么提取数组_结点_03


注意

1.match no:0随机;n取第几个匹配值;-1匹配所有,后续引用用 变量名_N 取第N个值。(划重点,这条规则后面要用到)

2.Default Values 支持中文(我觉得用中文在报错的时候看结果的请求数据会清楚一点)

3.提取JSON

在请求A下增加JSON Extractor

3.1配置参数

Names of created variables配置需要获取的参数名,比如下图定义的pici定义的一个参数${pici},则在Names of created variables配置pici,如果存在多个参数,用逗号分隔,经测试,支持中文参数

jmeterjson提取器 default values默认未为null jmeter的json提取器怎么提取数组_数组_04


jmeterjson提取器 default values默认未为null jmeter的json提取器怎么提取数组_结点_05

3.2元素定位

发一个请求A,查看响应报文,这是格式化的JSON

jmeterjson提取器 default values默认未为null jmeter的json提取器怎么提取数组_数组_06


假如定位的JSON元素为code和typeid这两个位置,可以这样定义:

jmeterjson提取器 default values默认未为null jmeter的json提取器怎么提取数组_数组_07


注意:

1.JSON定位要按照JSON路径表达式来定位。$表示响应的根对象。取子对象或对象的属性用.

2.两个参数分别对应下面的定位元素,多个参数之间用英文的逗号分割

详细的JSON定位方式可参考以下链接:JSONPath 表达式 后面的配置项可不填

4.提取JSON数组

4.1数组单元素提取

JSON数组的定义自己百度,简单来说就是同一个结点下有多个同名的数据,如图

jmeterjson提取器 default values默认未为null jmeter的json提取器怎么提取数组_结点_08


比如我要定位到第一个major_group_code,可以这么配置:

方法一

直接在JSON Path expression 中配置

jmeterjson提取器 default values默认未为null jmeter的json提取器怎么提取数组_数组_09

注意:
1.JSON取数组里的对象用[],数组索引从0开始的,记住第一个元素对应的下标是0,不是1
2.数组的下标写在父结点后面,不是写在子结点后面

方法二

使用通配符把定位信息提取出来,放到Match No.(0 for Random) 中配置

jmeterjson提取器 default values默认未为null jmeter的json提取器怎么提取数组_数组_10


注意:

1.通配符为*,代表都可以匹配

2.Match No.(0 for Random)中的第一个元素应该写为1,不是0

最后配置参数和非数组参数取值方式一致。

4.2数组提取

JSON元素定位使用*标记为任意,然后再在Match No.(0 for Random)中填入-1,就可以把所有的元素遍历一遍填入到参数的"数组"(暂且这么叫吧=_=)

jmeterjson提取器 default values默认未为null jmeter的json提取器怎么提取数组_JSON_11


提取参数时,要加上”_X“,如果没有配置Compute concatenation var(suffix_ALL) 的时候的默认读取参数的方法

比如上面的ProfessionalGroupCode的第一个元素取值就是ProfessionalGroupCode_1,然后填入到参数化的请求B位置

jmeterjson提取器 default values默认未为null jmeter的json提取器怎么提取数组_jmeter_12

4.3多元素提取

注意:分隔符为分号