2017-04-20 67 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