当前位置: 首页 > 知识库问答 >
问题:

JMeter如何使用正则表达式提取器从响应的条目数组中提取id

申屠裕
2023-03-14

我对JMeter完全陌生。我也有类似的JMeter问题:从数组响应中提取正则表达式,这里我使用了相同的测试负载。我正在尝试使用正则表达式提取器,并希望提取所有addressIds。即[0011442239,0011442246]。我有一个post请求要发送,有效载荷只有addressIds数组。有人能帮我一下吗?

我试图使用\[([^\]])\],但这没有奏效。如上所述,我对JMeter和Regular Expressin完全陌生。

抱歉,我的错误是,我希望响应为整数数组。即[0011442239、0011442246]。

谢谢

[
  {
    "footprint": null,
    "type": null,
    "addressId": "0011442239",
    "streetName": "solitudestr.",
    "streetNrFirstSuffix": null,
    "streetNrFirst": null,
    "streetNrLastSuffix": null,
    "streetNrLast": null,
    "houseNumber": "25",
    "houseName": null,
    "city": "stuttgart",
    "postcode": "70499",
    "stateOrProvince": null,
    "countryName": null,
    "poBoxNr": null,
    "poBoxType": null,
    "attention": null,
    "geographicAreas": [
      
    ],
    "firstName": null,
    "lastName": null,
    "title": null,
    "region": "BW",
    "additionalInfo": null,
    "properties": [
      
    ],
    "extAddressId": null,
    "entrance": null,
    "district": null,
    "addressLine1": null,
    "addressLine2": null,
    "addressLine3": null,
    "addressLine4": null,
    "companyName": null,
    "contactName": null,
    "houseNrExt": null,
    "derbyStack": false
  },
  {
    "footprint": null,
    "type": null,
    "addressId": "0011442246",
    "streetName": "solitudestr.",
    "streetNrFirstSuffix": null,
    "streetNrFirst": null,
    "streetNrLastSuffix": null,
    "streetNrLast": null,
    "houseNumber": "26",
    "houseName": null,
    "city": "stuttgart",
    "postcode": "70499",
    "stateOrProvince": null,
    "countryName": null,
    "poBoxNr": null,
    "poBoxType": null,
    "attention": null,
    "geographicAreas": [
      
    ],
    "firstName": null,
    "lastName": null,
    "title": null,
    "region": "BW",
    "additionalInfo": null,
    "properties": [
      
    ],
    "extAddressId": null,
    "entrance": null,
    "district": null,
    "addressLine1": null,
    "addressLine2": null,
    "addressLine3": null,
    "addressLine4": null,
    "companyName": null,
    "contactName": null,
    "houseNrExt": null,
    "derbyStack": false
  }
]

共有1个答案

锺超英
2023-03-14

您的响应是JSON,因此您应该考虑使用允许执行任意JMESPath查询的JSON JMESPath Extractor,而不是尝试使用正则表达式解析它。

特别是在您的情况下,您可以使用以下表达式得出这些地址ID的逗号分隔列表:

[*].addressId | join(',',@)

演示:

如果您确实需要用引号将这些addressId括起来,则需要切换到JSR223 PostProcessor和以下Groovy代码:

com.jayway.jsonpath.JsonPath.read(prev.getResponseDataAsString(),'$..addressId').collect {it -> "\"$it\""} as String
 类似资料:
  • 问题内容: 我只是想使用jmeter提取json响应数据,但不能这样做。 我得到类似的东西。 我正在尝试但无法获得。 谁能帮我使这个工作正常? 问题答案: 外观在响应中是否唯一(仅出现一次)? 如果是这样,您可以简单地使用正则表达式提取器添加到HTTP请求中,该请求器返回json响应,并带有如下正则表达式: `` 并将进一步提取的值称为。 但是,如果您的情况更加复杂,并且在json响应中出现了几种

  • 当我在调试采样器中看到时,我的变量中没有任何东西。

  • 我想知道为什么JMeter中的正则表达式提取器在参数化后不提取数据。响应消息:内部服务器错误 添加的表达式包括: > name=“\uuuueventvalidation”id=“\uuueventvalidation”value=“(.?)” name=“\uuuu VIEWSTATE”id=“\uuuu VIEWSTATE”value=“(.?)”

  • 我正在尝试用常规提取来提取强文本json,然后用格式化的json将其发布到下一个请求正文数据中。对于我提取的json,它们没有格式化,我只是想知道是否有任何功能或方法来格式化它? 使用正则表达式提取器获取请求(提取粗体部分) 在下一个请求中发布提取的数据(从上面的请求中提取的JSON数据用正则表达式显示为整个字符串,只是想知道如何在这个正文数据中格式化?)

  • 我试图创建一个线程组,使登录到我们的系统中。为此,我需要包含 每次打开页时生成的标记,并保存在隐藏值中。因此,通常的解决方案,如响应,执行正则表达式提取器,并使值变量和it稍后请求,对我来说不起作用。因为标记与和时不同。 然后,我找到了一个并行控制器,这对我来说可能是一个解决方案。但我找不到办法。另外,没有我的母语(日语)的参考资料。我想要标记到某些登录操作,所以我需要用并行控制器做正则表达式提取

  • 问题内容: 我有一些粗略的字符串: 我想使用Java Regex类提取[some number]中的文本。 我大致知道我想使用什么正则表达式(尽管欢迎所有建议)。我真正感兴趣的是Java调用以获取正则表达式字符串并将其用于源数据以产生[some number]的值。 编辑:我应该补充一点,我只对单个[一些数字](基本上是第一个实例)感兴趣。源字符串很短,我不会寻找[some number]的多次出

  • 问题内容: 我的数据库中有Markdown格式的文本。我想提取链接并计算我拥有的匹配链接的数量。我可以使用类似于以下的查询来获取包含链接的文本块的列表: 但是,如何进行下一步,仅提取文本的链接部分(括号中的部分)?如果可以得到,则可以计算此特定链接在我的数据集中的次数。 一些样本数据: 我正在使用SQL Server 2012(如果这方面的版本之间存在差异)。 问题答案: 假设实际数据不比所陈述的

  • 我试图使用JMeter登录到ASP.NET web窗体应用程序。我将登录序列记录到*.jmx文件中,现在尝试使用正则表达式提取器后处理器提取__ViewState、__ViewStateGenerator和__EventValidation隐藏输入。 在这三种情况下,JMeter提取的是我想要提取的变量的名称(例如“${viewstate}”),而不是我想要提取的值。下面是当我查看ViewResu