使用JMeter使用正则表达式提取器提取值

时间:2017-05-10 11:05:06

标签: json jmeter

我有以下值

[
{
"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

感谢任何帮助?

3 个答案:

答案 0 :(得分:3)

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

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

演示:

JMeter JSON Demo

参考文献:

答案 1 :(得分:0)

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

它捕获指定捕获组 id 中的ID1,ID2等。

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

答案 2 :(得分:0)

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

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

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