首页 > 解决方案 > 需要使用正则表达式提取多值密钥对

问题描述

在我的 Web 测试项目中,一个请求在 body 标记中的 json 下面返回。我想提取每个 FieldItem 的所有 TimeEntryIds。使用单个 RegEx 提取器(后处理程序),因为我需要在连续的 Web 请求中传递每个 TimeEntryid。

{
  "InvoiceItemId": 0,
  "JobId": 9999,
  "CreatedDate": "0001-01-01T00:00:00Z",
  "LastUpdatedDate": "0001-01-01T00:00:00Z",
  "FieldItem": [
    {
      "root": false,
      "TimeEntryId": 1,
      "UpdatedDate": "2019-07-19T13:14:29.823Z"
    },
    {
      "root": false,
      "TimeEntryId": 2,
      "UpdatedDate": "2019-07-19T13:14:29.823Z"
    },
    {
      "root": false,
      "TimeEntryId": 3,
      "UpdatedDate": "2019-07-19T13:14:29.823Z"
    },
       {
      "root": false,
      "TimeEntryId": 4,
      "UpdatedDate": "2019-07-19T13:14:29.823Z"
    }
    ]
}

我尝试了 "TimeEntryId":(.\d+) 正则表达式来获取值,但根据 GUI 选项,我们仅在我的情况下得到一个键\值对,它是 TimeEntryId:1。

在单个 RegEx 提取器中获取所有 Key\Value 是否有任何捷径。

标签: jsonregexjmeter

解决方案


JS解决方案

如果您JSON.stringify()使用您的数据然后使用data.match(regex);您将获得所有 id 的数组。


推荐阅读