2017-03-08 39 views
0

我需要的正則表達式,可以從序列中的JMeter的正則表達式提取做提取JSON結構的JMeter正則表達式提取得到JSON結構

[message1] 

    { 
     "headers": { 
      "messageId": "a0923b4c-33f6-4b0c-be53-be17332d51fa" 
     }, 
     "payload": { 
      "maxIdlePeriod": 1800 
     }, 
     "status": { 
      "code": "ok", 
      "errorMessages": [] 
     } 
    } 


[message2] 


    { 
     "headers": { 
      "messageId": "46fb53f0-c3de-4270-bad5-6f504af197f9" 
     }, 
     "payload": { 
      "termsUrl": "https://termsUrl.com", 
      "termsVersion": "8201" 
     } 
    } 

我已經試過了這個正則表達式中的其他線程堆棧{(發現? [^ {}] |(?R))},但在JAVA中不支持似乎遞歸 - 無效表達式:{(?:[^ {}] |(?R))} Sequence(?R ... )不認可

在此先感謝

+0

使用[JSON路徑提取器](https://jmeter-plugins.org/wiki/JSONPathExtractor/)而不是正則表達式提取器。 –

+0

嗨Wiktor的, 不能使用,因爲響應包含JSON消息的序列,沒有一個是JSON路徑提取依賴於 –

+1

充分反應和預期的結果,請 –

回答

0

所以,你似乎有一個序列不同的JSON「文件」中的一個單個的迴應,對嗎?那麼,如果你正在尋找最簡單的方法 - 爲什麼不用單根來接受它們,那麼你將有一個單一的JSON與元素列表,因此你可以使用JSON提取器後處理器?

如果你堅定地使用正則表達式提取器 - 我可能會建議嘗試先切換多線模式(使用(?:m)),然後使用類似(^\{\n$.+^\}\n$)的東西 - 免責聲明:未經測試!,尤其適用於在多線模式下開始/結束線錨 - 但我希望你有這個想法(同樣重要的是要仔細檢查你是否有\n\r\n,並且可能與中心.+一起玩,使其更具體)。

或選擇JSR223/Beanshell後處理器並以自定義方式解析您的響應。

+0

對於Yuri的建議感謝,我們決定去Beanshell –