如何捕获正则表达式中依赖于另一个动态值的动态值

时间:2016-03-29 06:11:01

标签: regex jmeter

enter image description here我是Jmeter的新手,我正在寻找一种捕获粗体“id”(“id”:“56fa091ae4b081fb934b083a”)的方法,该方法具有基于“parentEventId”的动态数据。元数据部分中的动态值(我已经从前一个线程组获取了“parentEventId”值)。可以存在具有不同“parentEventId”的多个记录,并且我需要获得所选“parentEventId”的所提及的“id”数据。

这可能有一个简单的答案,但我找不到在If Controller中使用的表达式,我尝试了几个RegEx提取器,但没有一个工作,我也无法在Web上找到任何正面答案。 所以对此的任何帮助都将受到高度赞赏,谢谢你提前

以下是我的身体数据;

[{“id”:“56fa091ae4b081fb934b083a”,“eventCalendar”:{“id”:“53757a6c156695a10bcefd57”,“type”:“PERSON”,“displayName”:“测试名称”} ,“organizerEvent”:true,“start”:1459486061505,“end”:1459489661505,“allDay”:false,“title”:“test title”,“description”:“test description”,“location”:“test location” ”, “类名”: “CS-12”, “类型”: “日历”, “visibleToPublic”:假, “元数据”:{ “parentEventId”: “56fa091ae4b081fb934b0839”},

2 个答案:

答案 0 :(得分:2)

如果您的parentEventIdid相同,为什么不使用parentEventId?如果不是 - 用完整回复更新您的问题并显示关系。

顺便说一下,通过JSON Path Extractor项目可以使用JMeter Plugins来处理JSON数据更好,它比正则表达式更方便。例如,您可以使用以下内容提取parentEventId

$..parentEventId[0]

参考文献:

答案 1 :(得分:2)

如果我理解正确,您将获得动态parentEventId信息,并且您希望相应地从JSON数据中提取子ID。如果是这种情况,以下可能是您的解决方案

var parentEventId = "56fa091ae4b081fb934b0839",
             data = '[{"id":"56fa091ae4b081fb934b083a","eventCalendar":{"id":"53757a6c156695a10bcefd57","type":"PERSON","displayName":"Test Name"},"organizerEvent":true,"start":1459486061505,"end":1459489661505,"allDay":false,"title":"test title","description":"test 56fa091ae4b081fb934b083adescription","location":"test location","className":"cs-12","type":"CALENDAR","visibleToPublic":false,"metadata":{"parentEventId":"56fa091ae4b081fb934b0839"},',
              rex = new RegExp('\\[{"id":"([a-f0-9]{24})"(?=.*{"parentEventId":"' + parentEventId + '"})',"g"),
              res = rex.exec(data);
console.log(res[1]); // 56fa091ae4b081fb934b083a