2017-04-20 145 views
1

从下列数组中捕获的最佳方法是什么?从JSON数组中提取(JMeter)

  • 我只需要捕获任何“BEGINDATE”的值,例如:2017-05-01T08:30:00可以在下面的例子中
  • 我需要确保“beschikbaar一个有效的'= TRUE的日期,我是捕捉

我使用JSON路径提取具有类似线尝试:?(@ beschikbaar == $ .. '真')。BEGINDATE但我'm面临的语法错误,我无法修复由于我有限的正则表达式/ JSON路径知识

示例数组是;

{ 

"data": 
[ 
    [ 
     { 
      "beginDate":"2017-05-01T08:00:00", 
      "eindDate":null, 
      "beschikbaar":false 
     }, 
     { 
      "beginDate":"2017-05-01T08:15:00", 
      "eindDate":null, 
      "beschikbaar":false 
     }, 
     { 
      "beginDate":"2017-05-01T08:30:00", 
      "eindDate":"2017-05-01T10:30:00+02:00", 
      "beschikbaar":true 
     }, 
     { 
      "beginDate":"2017-05-01T08:45:00", 
      "eindDate":"2017-05-01T10:45:00+02:00", 
      "beschikbaar":true 
     }, 
     { 
      "beginDate":"2017-05-01T09:00:00", 
      "eindDate":"2017-05-01T11:00:00+02:00", 
      "beschikbaar":true 
     }, 
     { 
      "beginDate":"2017-05-01T09:15:00", 
      "eindDate":"2017-05-01T11:15:00+02:00", 
      "beschikbaar":true 
     }, 
     { 
      "beginDate":"2017-05-01T09:30:00", 
      "eindDate":"2017-05-01T11:30:00+02:00", 
      "beschikbaar":true 
     }, 
     { 
      "beginDate":"2017-05-01T09:45:00", 
      "eindDate":"2017-05-01T11:45:00+02:00", 
      "beschikbaar":true 
     }, 
     { 
      "beginDate":"2017-05-01T10:00:00", 
      "eindDate":"2017-05-01T12:00:00+02:00", 
      "beschikbaar":true 
     }, 

回答

2

不要使用正则表达式JSON数据,JMeter的提供JSON Extractor旨在通过JSON Path Language JSON数据进行工作,所以你应该能够像查询,让您的“BEGINDATE”:

$..[?(@.beschikbaar == true)].beginDate 

演示:

JMeter Conditional JSON

检查出JMeter's JSON Path Extractor Plugin - Advanced Usage Scenarios文章更详细的解释和更多的例子。

+0

哦废话...我用'真'而不是真正的真实,并想知道为什么它没有工作一个小时:)谢谢先生 – DMC

1

你可以试试这个

(?s)\{.*?\"beginDate\":\"([^{]*?)\"[^{]+\"beschikbaar\":true.*?\} 

(?s)是单行修改,这使得.匹配换行符

您可以在http://www.regexplanet.com/advanced/java/index.html

测试,并设定Template$1$指使用第一组

+0

这也按预期工作。谢谢 – DMC