Jmeter从JSON聚合某些响应值以在下一个请求中使用

kk1957

我收到来自请求的以下回复

[
{
    "id": 3767,
    "sellerName": "abc",
    "siteActivity": [
        {
            "siteId": -1,
            "siteName": "example.com",
            "categories": [
                {
                    "categoryId": 79654,
                    "parentId": null,
                    "name": "Photo & Picture Frames",
                    "siteName": null,
                    "channelType": null
                },
                {
                    "categoryId": 114397,
                    "parentId": null,
                    "name": "Chests of Drawers",
                    "siteName": null,
                    "channelType": null
                },
                {
                    "categoryId": 11707,
                    "parentId": null,
                    "name": "Jewellery Boxes",
                    "siteName": null,
                    "channelType": null
                },
                {
                    "categoryId": 45505,
                    "parentId": null,
                    "name": "Serving Trays",
                    "siteName": null,
                    "channelType": null
                }
            ]
        }
    ]
},
{
    "id": 118156,
    "sellerName": "xyz",
    "siteActivity": [
        {
            "categoryId": 45505,
            "parentId": null,
            "name": "Serving Trays",
            "siteName": null,
            "channelType": null
        }
    ]
}
]

现在,我需要提取“ id”值和“ categoryId”值,并将它们作为列表发送到下一个请求正文中。

目前,我在表达式中使用JSON Path Extractor

    $.[*].id

让我掌握所有ID,

    $.[*].siteActivity.[categoryId]

类别ID。接下来,我要使用以上值并将它们作为参数发送到请求正文中。目前,我只能使用

   $.[0].id

然后将其分配给变量“ id”,并在请求正文中使用以下内容

 {"ids":[{"id":"${id}"}]}

但我希望能够发送

 {"ids":[{"id":"${id}"},{"id":"${id2}"}....]}

对可以有多少个ID没有限制,因此我无法进行硬编码,并且需要动态的东西来进行聚合。什么样的处理器可以帮助我?如果可以的话,请添加一些示例。

德米特里

我相信您应该能够使用Beanshell PostProcessor来构建请求。

给定示例数据,您的$.[*].idJSONPath表达式应返回以下值:

id=[3767,118156]
id_1=3767
id_2=118156

因此,基本上,您需要:

  1. 确定“ id”计数
  2. 填充要发送的动态JSON对象
  3. 将其存储到JMeter变量以供以后使用

为了这样做,JSONPath Extractor之后添加一个Beanshell PostProcessor ,并将以下代码放入其“脚本”区域

import net.sf.json.JSONArray;
import net.sf.json.JSONObject; // necessary imports

JSONObject data2Send = new JSONObject();
JSONArray array = new JSONArray(); // instantiate JSON-related classes

int idCount = vars.get("id").split(",").length; // get "id" variables count

for (int i = 1; i <= idCount; i++) { // for each "id" variable
    JSONObject id = new JSONObject(); // construct a new JSON Object
    id.put("id", vars.get("id_" + i));// with name "id" and value id_X 
    array.add(id);  // add object to array
} 

data2Send.put("ids",array); // add array to "ids" JSON Object
vars.put("myJSON", data2Send.toString()); // store value as "myJSON" variable

您可以{"ids":[{"id":"3767"},{"id":"118156"}]}根据${myJSON}需要引用您的数据

该方法将适用于任意数量的“ id”变量。

参考:

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Jmeter中如何使用响应json数据作为下一个请求参数

来自分类Dev

在下一个API调用中使用Spring WebClient响应?

来自分类Dev

如何增加我在响应中获得的变量并在下一个请求JMETER中分配新值

来自分类Dev

FitNesse:是否可以从测试步骤的响应中提取信息,并在下一个测试步骤中使用此值

来自分类Dev

如何在 Jmeter 中存储提取的 RegEx 并在下一个采样器中使用它

来自分类Dev

如何在下一个查询中使用一个查询的结果?

来自分类Dev

如何使用函数的返回值并在下一个函数中使用它

来自分类Dev

在下一个函数中使用from选项中的变量

来自分类Dev

PostgreSQL-在下一个查询中使用查询结果

来自分类Dev

在下一个循环代码中使用变量

来自分类Dev

TempVars - 获取 ID 以在下一个表单中使用

来自分类Dev

使用http出站网关响应作为下一个http请求的值条件的Spring集成

来自分类Dev

用于下一个请求的响应cookie

来自分类Dev

承诺链接:在下一个然后回调中使用上一个承诺的结果

来自分类Dev

使用用户默认值登录后如何存储值并检索它以在下一个视图控制器中使用?

来自分类Dev

解析json响应以用作下一个curl请求

来自分类Dev

mysql_fetch_array在下一个包含前一个值

来自分类Dev

postgres使用CTE插入,并在下一个子查询中使用插入的id

来自分类Dev

Qualtrics:保存上一个滑块响应并在下一个滑块中设置为默认值

来自分类Dev

如何在下一个活动中显示响应

来自分类Dev

为什么不能在下一个SELECT表达式中使用列别名?

来自分类Dev

在下一个`INSERT`语句中使用在`INSERT或IGNORE`中插入的ID

来自分类Dev

从微调器中定位用户选择并在下一个活动中使用它 - Android

来自分类Dev

如何在 ngFor 中使用引用 id (#) 并在下一个 Ng 选择中获得焦点?

来自分类Dev

复选框状态仅在下一个请求时可用

来自分类Dev

req.session在定义之后在下一个POST请求中返回undefined

来自分类Dev

将响应数据从一个 http 请求传递到下一个

来自分类Dev

在字母数字编号系统中使用Excel VBA锻炼下一个值

来自分类Dev

在字母数字编号系统中使用Excel VBA锻炼下一个值

Related 相关文章

  1. 1

    在Jmeter中如何使用响应json数据作为下一个请求参数

  2. 2

    在下一个API调用中使用Spring WebClient响应?

  3. 3

    如何增加我在响应中获得的变量并在下一个请求JMETER中分配新值

  4. 4

    FitNesse:是否可以从测试步骤的响应中提取信息,并在下一个测试步骤中使用此值

  5. 5

    如何在 Jmeter 中存储提取的 RegEx 并在下一个采样器中使用它

  6. 6

    如何在下一个查询中使用一个查询的结果?

  7. 7

    如何使用函数的返回值并在下一个函数中使用它

  8. 8

    在下一个函数中使用from选项中的变量

  9. 9

    PostgreSQL-在下一个查询中使用查询结果

  10. 10

    在下一个循环代码中使用变量

  11. 11

    TempVars - 获取 ID 以在下一个表单中使用

  12. 12

    使用http出站网关响应作为下一个http请求的值条件的Spring集成

  13. 13

    用于下一个请求的响应cookie

  14. 14

    承诺链接:在下一个然后回调中使用上一个承诺的结果

  15. 15

    使用用户默认值登录后如何存储值并检索它以在下一个视图控制器中使用?

  16. 16

    解析json响应以用作下一个curl请求

  17. 17

    mysql_fetch_array在下一个包含前一个值

  18. 18

    postgres使用CTE插入,并在下一个子查询中使用插入的id

  19. 19

    Qualtrics:保存上一个滑块响应并在下一个滑块中设置为默认值

  20. 20

    如何在下一个活动中显示响应

  21. 21

    为什么不能在下一个SELECT表达式中使用列别名?

  22. 22

    在下一个`INSERT`语句中使用在`INSERT或IGNORE`中插入的ID

  23. 23

    从微调器中定位用户选择并在下一个活动中使用它 - Android

  24. 24

    如何在 ngFor 中使用引用 id (#) 并在下一个 Ng 选择中获得焦点?

  25. 25

    复选框状态仅在下一个请求时可用

  26. 26

    req.session在定义之后在下一个POST请求中返回undefined

  27. 27

    将响应数据从一个 http 请求传递到下一个

  28. 28

    在字母数字编号系统中使用Excel VBA锻炼下一个值

  29. 29

    在字母数字编号系统中使用Excel VBA锻炼下一个值

热门标签

归档