Jmeter-如何读取Json格式的数组形式的GET请求返回的多个值并将其写入CSV文件

时间:2018-06-28 12:54:00

标签: json jmeter

Jmeter-我有一个以json格式的数组形式从Get请求返回的多个值(至少约250个值),我需要在下一个GET请求中将数组中的每个值作为参数传递

请求1

> Get http://xxx/store1?

json格式的响应如下所示

{"store1":"peirre","inventorylist":["item1","item2","item3"..........."item250"]}

我将需要像这样在下一个GET请求中使用每一项,以获取价格,可用数量,生产地点等特征,

请求2

Get https://xxx/store1/item1?
Get https://xxx/store1/item2?
Get https://xxx/store1/item3?

当我可以读取响应并将数组中的每个值写入CSV文件时,这很容易,这样我的下一个get请求将只读取CSV文件并触发所有请求

有没有一种方法可以实现?

提前谢谢

2 个答案:

答案 0 :(得分:0)

  1. JSON Extractor添加为返回上述JSON的请求的子代
  2. 配置如下:

    • 已创建变量的名称:任何有意义的变量,例如item
    • JSON路径表达式:$.inventorylist.*
    • 配对号:-1
  3. 在第一个HTTP请求采样器之后添加ForEach Controller并按以下方式进行配置:

    • 输入变量前缀:您在JSON提取器中用作“已创建变量的名称”的变量,即item
    • 输出变量名称:任何有意义的变量,例如current_item
  4. HTTP Request采样器添加为ForEach Controller的子代,并在“路径”字段中使用https://xxx/store1/${current_item}-它将遍历所有“项目”

    JMeter JSON Extractor and ForEach Controller

答案 1 :(得分:0)

  1. 向具有以下属性的第一个“获取请求”添加Json Extarctor enter image description here

2。添加一个JSR223后处理器并初始化一个计数器,如下所示  enter image description here

  1. 添加一个while控制器并将您的get请求放入while控制器中。

添加以下条件

${__javaScript(parseInt(vars.get("counter"))<=parseInt(vars.get("List_matchNr")))}

如下所示

enter image description here

  1. 在您的第二个get请求中,添加一个JSR223后处理器并按如下所示增加计数器

    int计数器= Integer.parseInt(vars.get(“ counter”))+1;

    vars.put(“ counter”,Integer.toString(counter));

enter image description here

  1. 使用${__V(List_${counter})}替换硬编码值

此循环将遍历匹配编号,并将每个项目的请求发送到服务器

enter image description here

有关while循环的更多信息,请follow the link