【问题标题】:Extraction of value using Regular Expression Extractor using JMeter使用正则表达式提取器使用 JMeter 提取值
【发布时间】:2017-05-10 11:05:06
【问题描述】:

我有以下价值观

[
{
"id": ID1,
"XXX": "XXXX",
"XXX": "XXX XXX",
"xxx": {
  "XXXX": "XXXX",
  "XXXXX": "XXXX"
},
"XXXX": "XXXX@XXXX.com",
"XXXXX": "XXXX",
"XXXX": XXX,
"Section1": [
  {
    "id": ID_Section1,
    "xXXX": "XXXX",
    "teams": {
      "XXXX: XXX,
      "XXX": "XXX XXX XXX"
    },
    "Section2": {
      "id": ID_Section2,
      "XXXX": "XXX XX",
      "XXX": "XXX",
      "XXX": "XX-XX"
    },
    "XXX": XXX
  }
 {
"id": ID2,
"XXX": "XXXX",
"XXX": "XXX XXX",
"xxx": {

我需要获取 ID1、ID2 等值,但是在使用下面的正则表达式时,我会获取其他 ID 的所有值以及我不需要的 ID_Section1、ID_Section2。

表达式:

 "id":(.?),

模板:$1$

我还尝试通过以下命令使用 JSON 路径提取器提取值,但它仍在获取所有值。

 $..id

有什么帮助吗?

【问题讨论】:

  • 使用json解析器解析json?

标签: json jmeter


【解决方案1】:

不要使用正则表达式解析 JSON

JMeter 附带 JSON Extractor,它允许执行 JsonPath 语言查询以从 JSON 实体中获取数据,因此您可以使用简单的查询获取您感兴趣的“ID”,例如:$[0].id

演示:

参考资料:

【讨论】:

  • 谢谢。由于我需要获取所有 id 值,因此我使用了您的解决方案并进行了一些修改。我没有使用 $[0].id,而是使用了 $[*].id,这对我有用。谢谢您的帮助。我已经接受了你的回答。干杯
【解决方案2】:

这个呢:(?:"|')id(?:"|')\s*:\s*(?<id>ID\d+)

它在命名捕获组id中捕获ID1、ID2等。

您可以在线尝试此解决方案:https://regex101.com/

【讨论】:

  • 感谢您的帮助,但我收到错误“org.apache.oro.text.MalformedCachePatternException: Invalid expression: (?:"|')id(?:"|')\s* :\s*(?ID\d+) 序列 (?<...>
【解决方案3】:

您可以将其用于正则表达式:

{\n"id":(.*?),

它将获取 ID1、ID2....并将它们存储在不同的变量中。

【讨论】:

  • 谢谢,但是使用上面的代码,我得到了 0 个匹配计数。无论如何,我已经接受了上面提供的答案。无论如何感谢您的帮助。干杯。
  • 它对我有用,你可以在这里查看regex101.com/r/5wcotU/1
猜你喜欢
  • 1970-01-01
  • 2023-03-15
  • 2020-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多